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