Два SQL для отсортированной даты времени
-
13-12-2019 - |
Вопрос
У меня данные 98 Вт.Когда я хочу сортировать свои данные с pub_time, я нашел интерес.
Вот SQL:
select *
from t_p_blog_article_info t
order by t.pub_time desc
.
Это стоят 19s.
select *
from t_p_blog_article_info t
where t.pub_time > to_date( '1900-01-01 01:00:00', 'yyyy-mm-dd hh24:mi:ss ')
order by t.pub_time desc
.
Стоимость 0,2с.
Я хочу знать, почему?
Решение
У вас, вероятно, есть индекс на Pub_time на вашем столе.
Следовательно, второй запрос может использовать этот индекс, чтобы вернуть только те записи с ненулевыми датами после указанной даты, тогда как первый запрос должен запрашивать всю таблицу.Другие советы
Есть ряд возможностей. Вы можете отфильтровывать большое количество строк с недействительными / нулевыми датами в PUB_TIME, но я сомневаюсь, что вы не можете заметить / упомянуть значительное количество этих.
Три вещи, которые прилипают в голове:
Испытание причин, подобных вещам, как это быстро становится эмпирическим предприятием - мне трудно сказать больше, не зная вашу платформу и версию. Из тегов я беру его, вы используете Oracle, в этом случае вы сможете использовать некоторую форму «объяснить запрос» или инструмент «Объяснить план», чтобы получить лучшее чувство того, что происходит. Для получения дополнительной информации о Oracle Optimizer см. http://docs.orcle .com / cd / b10500_01 / cd / b10500_01 / server.920 / a96533 / optomops.htm (это предназначено для Oracle 9i v9.2, но он имеет достойное объяснение независимых версию концепции)