これは私が永遠に持っていた質問です。MySQLのインデックスと注文
私が知る限り、インデックスの順序は重要です。したがって、[first_name, last_name]
のようなインデックスは[last_name, first_name]
と同じではありません。
私はORMを使用しておりますので、私は唯一の最初のインデックスを定義し、それが唯一の
SELECT * FROM table WHERE last_name="doe" AND first_name="john";
ため
SELECT * FROM table WHERE first_name="john" AND last_name="doe";
ずに使用することを意味していた場合、私は見当がつかないこれらの列が呼び出される順序です。それは、すべての順列にインデックスを追加しなければならないということですか? 2列のインデックスがあればそれが可能ですが、インデックスが3列または4列の場合はどうなりますか?
だから私はSELECT * FROMテーブルwhere last_name = "doe" AND first_name = "john"はそうではないと思いますか? これは、すべてのクエリ構築が私のORMによって隠されているため、2つのインデックスを定義する必要があります...私は定義する3つの列にインデックスがあるので、本当にうんざりです... –
いいえ、あなたは誤解しています。 'last_name' =" doe "と' first_name' = "john"クエリは、( 'first_name'、' last_name')または( 'last_name'、' first_name')インデックスだけを使用します。 – ChssPly76
質問:2 AND条件のクエリの場合、クエリの条件と比較してインデックスが「反転」されているかどうか、またはそれらの列の基数によって異なります。 – Mihai