0
点赞
收藏
分享

微信扫一扫

<postgreSQL查询优化深度探索>之第三章:逻辑重写优化


文章目录

  • ​​一、通用表达式​​
  • ​​二、子查询提升​​
  • ​​三、UNION ALL优化​​
  • ​​四、展开继承表​​
  • ​​五、预处理表达式​​
  • ​​1.连接Var的溯源​​
  • ​​2.常量化简​​
  • ​​3.谓词规范​​
  • ​​4.子连接处理​​
  • ​​六、处理HAVING子句​​
  • ​​七、Group By键值消除​​
  • ​​八、外连接消除​​
  • ​​九、grouping_planner的说明​​
  • ​​十、小结​​

一、通用表达式

逻辑优化分为:逻辑重写优化和逻辑分解优化

  • 划分依据:在逻辑重写优化阶段主要是对查询树进行重写,即在查询树上进行改造,改造之后还是查询树;
  • 在逻辑分解阶段,会将查询树打散,会重新建立等价于查询树的逻辑关系

逻辑重写优化函数调用函数图以及说明

<postgreSQL查询优化深度探索>之第三章:逻辑重写优化_database


通用表达式对应的是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的说明

十、小结


举报

相关推荐

0 条评论