У меня есть SQL-таблица с несколькими миллионами записей, и я попытался узнать, сколько записей старше 60 дней (Oracle 11.2.0.1.0).
Для этого эксперимента я использовал 3 разныхверсии оператора SELECT:
(Стоимость указана TOAD для Oracle V. 9.7.2.5)
select count(*) from fman_file<br>
where dateadded >= (select sysdate - 60 from dual)
Стоимость: 65
select count(*) from fman_file<br>
where dateadded >= sysdate - 60
Стоимость: 1909
select count(*) from fman_file<br>
where dateadded >= sysdate - numtodsinterval(60,'day')
Стоимость: 1884
select count(*) from fman_file where dateadded >= '10.10.2009'
Стоимость: 1823
(10.10.2009 - просто пример даты !!!)
У меня нет точного времени-значения для всех запросов, но первый действительно был самым быстрым.
Поэтому я попробовал еще несколько запросов select с другими подвыборками (например, (выберите 1000 из двойного)), и они были (иногда WAY) быстреечем другие с постоянными значениями.Даже кажется, что этот «WHATEVER» (ошибка / особенность) происходит и в MySQL.
Так может кто-нибудь сказать мне, почему первый запрос (намного) быстрее других?
Greetz
PS: Это не о sydate!Вопрос в том, ПОЧЕМУ ВАРИАЦИЯ С (ВЫБРАТЬ) БЫСТРЕЕ, ЧЕМ ДРУГИМИ?(с небольшим акцентом на Select-Variation (1.) и Constant-Variation (4.))