hive where join on顺序问题
正常来说顺序应该是on是最先执行,where次之,having最后,但是在hive中有一个谓词下推优化的配置项hive.optimize.ppd,默认值true,这一项开启的时候可能会先进行where的操作,这也是优化hiveSQL的一种方法,举例来看
select xxx
from test_table_1 a
join test_table_2 b
on a.dt = b.dt
where a.dt = '2021-01-01'
这段sql就会先将a表的内容限制在dt = '2021-01-01'然后再进行a表和b表的匹配,这在很多时候是巨大的性能提升,因为a可能是一张dt的分区表,限定了a的dt分区极大地节省了搜索花费的时间,如果不限制where,只在on中限制条件,可能会让mapreduce无法运行