SQL: разница между «МЕЖДУ» и «текущей_датой - число» - PullRequest
5 голосов
/ 18 февраля 2012

Мне интересно, какой из следующих способов является наилучшим способом реализации и почему.

select * from table1 where request_time between '01/18/2012' and '02/17/2012'

и

select * from table1 where request_time > current_date - 30

Ответы [ 2 ]

4 голосов
/ 18 февраля 2012

Я провел два запроса через некоторые из моих таблиц дат в моей базе данных и, используя EXPLAIN ANALYZE, нашел следующие результаты:

explain analyze
select * from capone.dim_date where date between '01/18/2012' and '02/17/2012'

Общее время работы: 22,716 мс

 explain analyze
select * from capone.dim_date where  date > current_date - 30

Общее время выполнения: 65,044 мс

Так что, похоже, 1-й вариант более оптимальный. Конечно, это смещено в сторону моей СУБД, но это все еще результаты, которые я получил.

Таблица имеет даты в диапазоне от 1900 до 2099 года, поэтому она довольно большая, а не просто какой-то изворотливый столик.

3 голосов
/ 18 февраля 2012

Between имеет включающие диапазоны, то есть, когда вы запускаете запрос, такой как id между 2 и 10, значения 2 и 10 также будут получены. Если вы хотите исключить эти значения, используйте> и <. </p>

Также, когда применяются индексы, скажем, в столбце даты> и <индекс лучше использовать, чем между. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...