いくつかの特定の日付に一致するすべての行についてテーブルをクエリしようとしています。日付は連続しておらず、日付範囲全体のデータを返すことは望ましくありません。特定の日付の数は非常に多く、数百になる可能性があります。フィールドはインデックス化されているDate
ので、それを利用したいと思います。
フィールドを文字列に変換Date
し、文字列の比較でクエリを実行すると、少し怠惰でパフォーマンスが低下し、インデックスが破棄されます。このようなもの(以下)は正しく機能しますが、パフォーマンスとテーブルのスキャンについて懸念しています。
SELECT Date,Time,Open,High,Low,Close,Volume FROM minuteBarTable
WHERE DATE(Date) IN ('2004-07-13','2011-09-01','2007-12-12');
' OR 'のブロックを使用すると、正しい効果と正しい結果が得られますが、よりエレガントでスケーラブルなアプローチを見つけたいと思います。何百もの日付で少し扱いにくくなる可能性があります。
SELECT Date,Time,Open,High,Low,Close,Volume FROM minuteBarTable
WHERE Date='2004-07-13' OR Date='2011-09-01' OR Date='2007-12-12';
ここでは、「 OR 」のブロックがより効率的なアプローチですか?