1 つの DATE 列と 1 つの TIME 列を含む、数百万行のテーブルがあります。
テーブル構造を変更することはできませんが、新しいインデックスを追加することは可能です。
このクエリを考慮すると:
SELECT * FROM Table WHERE TIMESTAMP(Date, Time) BETWEEN 'X' AND 'Y';
日付と時刻の列にインデックスがあり、日付と時刻の列にもインデックスがありますが、TIMESTAMP 関数を使用すると、クエリはインデックスを使用しません。
質問は、(データ型ではなく) TIMESTAMP 関数を使用するインデックスを作成できるかどうかです。そうでない場合、上記のクエリを変更してインデックスを使用する方法はありますか?
クエリを短く簡潔に保ち、可能であれば日付ごとに繰り返す必要がないようにしています。
編集:
では、MySQL は式インデックスをサポートしていないため、このクエリを変更して日付または (日付、時刻) インデックスを使用する方法はありますか?