sql >> データベース >  >> RDS >> Mysql

私の単純なMySqlクエリはインデックスを使用しません

    'comments'テーブルに行が少ないと思います。これが、MySQLが最初のクエリでインデックスを使用する代わりに全表スキャンを実行している理由です。全表スキャンのコストは、最初にインデックスを照合してから行を検索するよりも低くなる可能性があると推定しています。

    2番目のクエリでは、インデックスを使用しています。これは、インデックスを照合した後にテーブルの行を検索する必要なしに、クエリのすべての列('id'列)をインデックスから直接取得できるためです。これは、「インデックスの使用」の追加情報の意味です。

    「コメント」にかなりの数の行がある場合、MySQLがまだフルスキャンを使用している場合は、奇妙な動作になると思います。実際、MySQLバージョン5.1でもまったく同じようにテストしており、行数が少ない場合でも常に「インデックス」を使用しています。



    1. MySQLでのLCASE()関数のしくみ

    2. 旅行ウェブサイトデータベースを設計する方法

    3. django ORMを使用して、外部キーフィールドで2つのテーブルをどのように結合しますか?

    4. 致命的なエラー:特権テーブルを開いてロックできません:テーブル'mysql.host'が存在しません