ホームページ  >  記事  >  バックエンド開発  >  MySQLでwhereとorderByの後のインデックスをヒットする方法を教えてください。

MySQLでwhereとorderByの後のインデックスをヒットする方法を教えてください。

WBOY
WBOYオリジナル
2016-08-29 08:50:521863ブラウズ

おそらく今、データベース内のリストをクエリするという要件があります。データテーブルはおそらく次のようになります:

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 に構築されたインデックスのみを使用し、他のフィールドのインデックスは使用しません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。