2011-01-26 4 views

答えて

3

カバーインデックスは、コンマ区切りのリストで列のリストを取ります。このリストは、左側からトラバース/レビューされます。左端の列が使用されない場合、索引は使用されません。以下のような列リストを持つ、意味:クエリがcol_aへの参照が含まれていません

col_a, col_b, col_c 

場合、それは使用されません。順序がに変更された場合:

col_c, col_b, col_a 

...その後col_cは、クエリで参照する必要があります。 2番目のカバー索引列の例を引き続き使用すると、col_bまたはcol_aは問合せに含める必要はありませんが、評価は列ごとに左から右に移動します。インデックスの使用のための参照は次の句にすることができ

コラム:

  • WHERE
  • GROUP
  • BY

参照することにより

  • ORDERを有する選択:

  • +0

    where節があったら、where節のフィールドをインデックスに追加してから、select文のすべてのフィールドを追加しますか? – John

    +0

    @ John:列の参照は、私が言及した句のどれにでも当てはまる可能性があります。それは、インデックスの存在がそれが使用されることを保証するものではありません - テーブルの統計情報はインデックスの選択に役立ちます。 –

    1

    MySQL Optimization 7.5.2 Multiple-Column Indexes言う:

    MySQLはWHERE内のインデックスの最初の列のための既知の量を指定すると、クエリが高速であるように、複数列索引を使用しています他の列の値を指定しなくても、この句を使用できます。リンク先のページの

    たとえばあなたは、インデックスの最初の列の値を指定しない場合も、インデックスがを使用していないことを、述べています。

    関連する問題