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

インデックスの列のサブセットをクエリすると、インデックスが使用されますか?

    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, c5c1を交換する理由 およびc2 2番目のインデックスはできた 条件がc2にあるクエリを処理します ただし、c1ではありません 、およびその逆。



    1. SQLServerのSelectステートメントでWhere句を使用する方法-SQLServer/TSQLチュートリアルパート109

    2. 間違ったmysqlクライアントライブラリバージョン用にコンパイルされたRubymysql2gem

    3. col value!=指定された値の場合、MySQLはtrue/falseを返します

    4. PostgreSQLに転送した後の「関係が存在しません」エラー