# #sql #google-bigquery
Вопрос:
Возможно, простой вопрос, но при запросе секционированного, будет ли запрос выполняться немного быстрее, если я буду фильтровать между датами или просто скажу, где дата >= определенная дата? Или это действительно не имело бы большого значения?
Например,
select *
from `project.dataset.table`
where date >= date_sub('2021-10-01',interval 30 day)
или
select *
from `project.dataset.table`
where date between '2021-09-01' and '2021-10-01'
Ответ №1:
Промежуток будет более производительным, потому что он будет обрабатывать меньше данных, так как он может обрезать больше разделов. Например, в вашем сценарии>=, если бы даты были указаны до 2022 года, тогда вы включили бы больше данных, чем в сценарии с явным промежутком.
Вы можете увидеть пример использования этого запроса ниже. Вставьте его в пользовательский интерфейс BQ, и на нем должно быть отображено, сколько данных будет обработано. Затем закомментируйте первый критерий, раскомментируйте второй и посмотрите, сколько данных будет обработано затем.
SELECT *
FROM `bigquery-public-data.wikipedia.pageviews_2021`
WHERE
--processes 241.9 GB
date(datehour) >= date_sub('2021-10-01',interval 30 day)
-- processes 178.4 GB
-- date(datehour) between '2021-09-01' and '2021-10-01'
;
Я скажу, однако, что если у вас нет большого объема данных, то это может не иметь большого значения.