文章目录
- 一、通用表达式
- 二、子查询提升
- 三、UNION ALL优化
- 四、展开继承表
- 五、预处理表达式
- 1.连接Var的溯源
- 2.常量化简
- 3.谓词规范
- 4.子连接处理
- 六、处理HAVING子句
- 七、Group By键值消除
- 八、外连接消除
- 九、grouping_planner的说明
- 十、小结
一、通用表达式
逻辑优化分为:逻辑重写优化和逻辑分解优化
- 划分依据:在逻辑重写优化阶段主要是对查询树进行重写,即在查询树上进行改造,改造之后还是查询树;
- 在逻辑分解阶段,会将查询树打散,会重新建立等价于查询树的逻辑关系
逻辑重写优化函数调用函数图以及说明
通用表达式对应的是WITH语句
- 不对通用表达式做提升优化
- 一次求值、多次使用
- eg
explain with cte as (select * from student) student sname from cte;
二、子查询提升
子查询和子连接的区别
- 若以范围表的方式存在,则是子查询;
- 若以表达式的存在,则是子连接;
- 出现在FROM关键字后的子句是子查询语句,出现在where/on等约束条件或者投影中的子句是子连接
子连接提升
三、UNION ALL优化
四、展开继承表
五、预处理表达式
1.连接Var的溯源
2.常量化简
3.谓词规范
4.子连接处理
六、处理HAVING子句
七、Group By键值消除
八、外连接消除
九、grouping_planner的说明
十、小结