以下のSQLを使用して文字列に保持されている日付範囲に基づいて行を選択していますが、効率的な方法です。あなたが見ることができるように、日付と時間は異なるフィールドで保持されています。私の記憶から、あるいはOracleの仕事をするとすぐに、属性の周りに関数を置くと、インデックスは使用できません。日付と時刻を組み合わせたPostgresは効率的です
select *
from events
where venue_id = '2'
and EXTRACT(EPOCH FROM (start_date + start_time))
between EXTRACT(EPOCH FROM ('2017-09-01 00:00')::timestamp)
and EXTRACT(EPOCH FROM ('2017-09-30 00:00')::timestamp)
インデックスを使用できる方法はありますか?
なぜエポックを抽出するのですか?どうして 'start_date + start_time BETWEEN '2017-09-01 00:00' :: timestamp AND '2017-09-30 00:00' :: timestamp'ですか? – Andreas