前言
前一篇文章已经从PG的数据结构等角度分析了PG的优化处理的源码细节,这节将从功能应用层面来对PG的查询优化进行分析。重点还是放到了逻辑查询优化功能上,分别针对,操作下推,谓词改造,语义转换,非SPJ优化等等内容。
PG查询优化器之逻辑查询优化
这里的逻辑优化是针对数据库常用的优化方案进行讲解,比如视图优化,操作下推等,下面就分模块的来详细的叙说。
视图重写
根据系统的查询规则,把查询修改为需要的规则传递给查询优化执行器。这个修改规则的过程就是视图重写的过程。从查询计划来分析,在视图的嵌套循环连接在单一视图不存在的情况下,视图被重写。
外连接操作,视图重写的过程
复杂视图连接的优化
子查询优化
通过子查询上拉达到简单的子查询优化的结果。下面先从PG的子连接优化对照表来分析