1

field1 と field2 の 2 つのフィールドを持つテーブル「test」と、field1_field2(field1, field2) を作成した複合インデックスがあります。ここにSQLがあります:select * from test force index(field1_field2) where field1 > 100 and field2 = 2 limit 200

そしてうまく動かない。私はそれを説明し、インデックスクエリで使用されるfield1条件のみが見つかり、field2条件は無視されました....

理由が知りたい 完璧な答えが欲しい

field1 > 100 のデータがたくさんあり、field2 = 2 のデータがたくさんあります

4

1 に答える 1

3

そのクエリではINDEX(field2, field1)この順序で必要です。=列をインデックスの最初に置きます。「範囲」( など>)に到達すると、それが使用されるインデックスの最後の部分になります。

ここにIndex Cookbookがあります。

于 2016-10-26T05:54:05.660 に答える