2

MySQLでテーブルのカバーインデックスを作成する標準的な順序はありますか?つまり、where句、order by、およびselectステートメントのフィールドを持つクエリがある場合、カバーするインデックスを適切に作成するために、インデックスへのフィールドはどのような順序で使用されますか?

4

2 に答える 2

3

カバーインデックスは、コンマ区切りのリスト内の列のリストを取ります。このリストは、左側からトラバース/レビューされます。左端の列が使用されていない場合、インデックスは使用されません。つまり、次のような列リストがあります。

col_a, col_b, col_c

クエリにへの参照が含まれていない場合、そのクエリはcol_a使用されません。順序が次のように変更された場合:

col_c, col_b, col_a

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

インデックスを使用するための列参照は、次の句に含めることができます。

  • 選択する
  • どこ
  • GROUP BY
  • 持っている
  • 注文者

参照:

于 2011-01-26T00:20:03.147 に答える
1

MySQL最適化7.5.2複数列インデックスによると:

MySQLは、他の列に値を指定しなくても、WHERE句でインデックスの最初の列に既知の数量を指定すると、クエリが高速になるように複数列のインデックスを使用します。

リンク先のページの例では、インデックスの最初の列に値を指定しない場合、インデックスは使用されないことも示されています。

于 2011-01-26T00:20:09.970 に答える