在逻辑计划之后做的,Catalyst优化器,共81条优化规则,分为27组,三大类。
谓词下推(Predicate Pushdown)
join on xxxx
where xxxx
提前过滤,减少下游处理数据量。
Inner Join
on
RBO优化前:

RBO优化后:

where

RBO优化前:

RBO优化后:

结论
内连接,RBO优化,会提前对左右两表都做过滤。
Left Join
on 左表条件

RBO优化前:

RBO优化后:

where 左表条件

RBO优化前:
RBO优化后:

on 右表条件

RBO优化前:

RBO优化后:

where 右表条件
RBO优化前:
RBO优化后:

结论
外连接,写在where后的条件,两表都会过滤。
左外连接,写在on的条件,右表进行过滤。
右外连接,写在on的条件,左表进行过滤。
注意:外关联时,过滤条件写在on与where,结果不一样!!
列裁剪(Column Pruning)
扫描数据源时,只读取与查询相关的字段。

常量替换(Constant Folding)
表达式替换




535

被折叠的 条评论
为什么被折叠?



