次のようなクエリ(Oracle DBで実行)があります。
SELECT
Column1,Column2,Column3 FROM MyDatabase.MyTableName
WHERE
(DELETED = 0)
AND (DATESEEN > TO_DATE ('20/03/2013 12:00:00', 'DD/MM/YYYY HH24:MI:SS'))
AND (DATERECORDED >= TO_DATE('20/06/2013 06:00:00', 'DD/MM/YYYY HH24:MI:SS'))
AND (DATERECORDED < TO_DATE('20/06/2013 12:00:00', 'DD/MM/YYYY HH24:MI:SS'))
クエリは動的に生成され、動的な値は次のとおりです。
where 句 (DATESEEN) の 2 行目は 90 日前です。
where 句の 3 行目は、クエリが最後に実行された時刻です。(通常は 12 時間前)
where 句の最後の行は現在の時刻です。
DATERECORDED にはインデックスがありませんが、DATESEEN にはあります。どうしようもない理由で、DATERECORDED にインデックスを付けることができません。
WHERE 句の「DATESEEN」行は完全に冗長ですか? DATESEEN は常に DATERECORDED よりかなり前の日付になるため、無視されますか? 実行計画はほとんど明らかにしません。
前もって感謝します!