おそらく今、データベース内のリストをクエリするという要件があります。データテーブルはおそらく次のようになります:
あ | B | C | D | え |
1 | 1 | 1 | 2016-08-05 | 40 |
... | ... | ... | ... | ... |
そして私の現在の SQL ステートメントはおそらく次のようになります
リーリーこの場合、クエリ時にヒットするようにインデックスを構築するにはどうすればよいですか? index(['B', 'C', 'D', 'E'])
の複合インデックスを作成することは可能ですか?
おそらく今、データベース内のリストをクエリするという要件があります。データテーブルはおそらく次のようになります:
あ | B | C | D | え |
1 | 1 | 1 | 2016-08-05 | 40 |
... | ... | ... | ... | ... |
そして私の現在の SQL ステートメントはおそらく次のようになります
リーリーこの場合、クエリ時にヒットするようにインデックスを構築するにはどうすればよいですか? index(['B', 'C', 'D', 'E'])
の複合インデックスを作成することは可能ですか?
理論的には、インデックスの左接頭辞の原則により 3 つのフィールド B、C、D が順番にヒットするため、このように構築できます。ただし、残念ながら、E フィールドが並べ替えにのみ使用される場合、インデックスはトリガーできません。 。
order by フィールドが where 条件に出現すると、並べ替え操作を行わずにインデックスが使用されるためです。それ以外の場合、order by は並べ替え操作を実行しません。
詳細については、この記事を読んでorderbyとindexの関係を分析してください
http://www.cnblogs.com/zhaoyl...
mysql 指定されたインデックスを強制する FORCE INDEX
SELECT * FROM TABLE1 FORCE INDEX (FIELD1) ...
上記の SQL ステートメントは、FIELD1 に構築されたインデックスのみを使用し、他のフィールドのインデックスは使用しません。