我使用从按日期划分的大型配置单元表中选择数据(格式: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'
我无法想到在使用<>而不是Between关键字时性能的任何重大变化。
但是如何使用IN关键字并列出范围之间的所有日期将比其他两种情况略有优势。
SELECT field_1, field_2 FROM table WHERE dates in ('20181125','20181126',...,'20190524','20190525');
[>=, <=
和BETWEEN
应该生成相同的执行计划,尽管在您的Hive版本中可能有所不同。
使用EXPLAIN,它显示查询执行计划。只有计划才能肯定地帮助回答这个问题。选中EXPLAIN DEPENDENCY
,它会打印要扫描的input_partitions
,然后您会看到分区修剪在每种情况下是否有效。
如果>=, <=
,BETWEEN
和IN
的计划相同,则其工作原理相同,并且性能应相同。