MySQL の日付フィールドにインデックスを設定する
-
27-09-2019 - |
質問
のようなものを使用したクエリで主に使用される日付フィールドにインデックスを設定することに実際の利点はありますか。
dateField < 'var'
そして
'var' BETWEEN dateField1 AND dateField2
検索は頻繁に行われますが、直接比較「=」を行うことはありません。
解決
はい、もちろん。範囲検索は、等価検索と同様にインデックスの恩恵を受けます。
からの引用 MySQL リファレンス マニュアル ::MySQL によるインデックスの使用方法:
B ツリー インデックスの特性
B ツリー インデックスは、=、>、>=、<、<=、または BETWEEN 演算子を使用する式での列比較に使用できます。LIKE の引数がワイルドカード文字で始まらない定数文字列である場合、インデックスは LIKE 比較にも使用できます。
状況によっては、範囲が大きくなりすぎる場合、実際にはテーブル スキャンの方が高速である可能性があるため、オプティマイザはインデックスを使用しないことを決定することがあります。使用 EXPLAIN
クエリでどのインデックスが使用されるか (存在する場合) を確認します。
所属していません StackOverflow