Почему между этими двумя запросами такая огромная разница в производительности?
-- (89 seconds)
SELECT max(mydate) FROM mytable WHERE eqpid = 'ABCDEFG'
AND mydate < sysdate - 5
vs.
-- (0.6 seconds)
SELECT max(mydate) FROM mytable WHERE eqpid = 'ABCDEFG'
AND mydate < TO_DATE('05/27/2011 03:13:00', 'MM/DD/YYYY HH24:MI:SS') -- 5 days ago
Независимо от индексов, кажется, что и to_date, и sysdate просто возвращают «некоторое значение даты».
Примечания : В этой таблице существует составной индекс, включающий eqpid и 2 других столбца. Также существует индекс для mydate. Оба являются b-деревом. Всего около 29 миллионов строк.
Почему оптимизатор выбрал для них такой явно другой (а в одном случае ужасный) план?