MySQLのドキュメントは、複数列のインデックスがどのように機能するかをうまく説明しています。ここ 。
一般に、インデックスはwhere
に使用できます 左端の列の数が インデックスの側には等式条件があります。あなたのwhere
句は次の列を使用します:
- c1、c2
- c1、c2、c3、c4
- c1、c2
- c1、c2、c5
列c1
で始まるインデックス およびc2
通常、これらのクエリに使用されます。 MySQLは、選択性など、インデックスの使用に他の条件を適用できます。つまり、c1
およびc2
たとえば、定数値を使用している場合、インデックスを使用してもクエリにはメリットがありません。
これらすべての組み合わせを最適化するために、c1, c2, c3, c4
の2つのインデックスを作成できます。 およびc2, c1, c5
。 c1
を交換する理由 およびc2
2番目のインデックスはできた 条件がc2
にあるクエリを処理します ただし、c1
ではありません 、およびその逆。