SQLを使用して特定の曜日のエントリを選択するにはどうすればよいですか?
-
03-07-2019 - |
質問
このクエリを使用して、月曜日の日付を持つすべての注文を選択できます。
SELECT * from orders WHERE strftime("%w", date)="1";
しかし、私が知る限り、すべての行について strftime
を計算する必要があるため、インデックスを使用してこれを高速化することはできません。
平日を保存したフィールドを追加できましたが、避けたいです。インデックスを使用する解決策はありますか、間違っていますか、このクエリは実際にうまく機能しますか? (つまり、結果を計算するためにすべての行を調べる必要はありません。)
解決
これまで月曜日にすべてしたい場合は、フィールドスキャンまたは順次スキャンが必要になります。たとえば、1年以内のすべての月曜日の実際の日付を計算します。条件 WHERE date IN( '2009-03-02'、 '2009-02-23'、...)
はインデックスを使用します
他のヒント
またはvartecの提案に代わるものとして、年の各日(両方ともインデックス付き)の日付と曜日名のみで構成されるカレンダーテーブルを作成し、このテーブルに対してJOINを実行してクエリを実行します。
所属していません StackOverflow