Есть ли разница между использованием vs '> & <' при запросе таблицы кустов, разбитой на строку даты? - PullRequest
1 голос
/ 25 мая 2019

У меня есть выбор данных из большой таблицы кустов, разбитых по дате (формат: yyyyMMdd), запрос улья требуется для выборки нескольких полей из данных за 6 месяцев (всего 180 разделов даты. В настоящее время запрос выглядитнапример:

SELECT field_1, field_2 FROM table WHERE `date` BETWEEN '20181125' and '20190525'

Хотелось бы знать, если изменение запроса на использование >= & <= имеет какое-либо значение с точки зрения производительности.

SELECT field_1, field_2 FROM table WHERE `date`>='20181125' AND `date`<='20190525'

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

>=, <= и BETWEEN должны генерировать одинаковые планы выполнения, хотя они могут отличаться в вашей версии Hive.

Использовать EXPLAIN , он показывает план выполнения запроса.Только план может помочь ответить на этот вопрос наверняка.Проверьте EXPLAIN DEPENDENCY, он печатает input_partitions для сканирования, и вы увидите, работает ли отсечение разделов в каждом случае.

Если планы одинаковы для >=, <=, BETWEEN и IN, то они работают одинаково и производительность должна быть одинаковой.

0 голосов
/ 26 мая 2019

Я не могу думать о каких-либо значительных изменениях производительности при использовании <> вместо Between .

Как бы то ни было, использование ключевого слова IN и перечисление всех дат в диапазоне будет иметь небольшое преимущество по сравнению с двумя другими сценариями.

SELECT field_1, field_2 FROM table WHERE dates in ('20181125','20181126',...,'20190524','20190525');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...