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ではありません 、およびその逆。