【SQL 优化器技术系列】谓词下推和上拉

本文介绍SQL执行过程中的优化技术——谓词下推与上拉,通过调整WHERE条件的位置,减少数据处理量,生成更高效的执行计划。谓词下推将外部条件应用到语句块内部,谓词上拉则将条件从一个语句块复制到另一个,以降低结果集大小,为后续的JOIN和GROUP BY操作提供更佳性能。

Oracle 2005 年出了一个 30 多页的小册子,《Query Optimization in Oracle Database10g Release 2》,介绍了常见的优化器技术。

我是做 SQL 执行的,优化部分只了解皮毛,从没有系统学习过。本系列逐个学习和介绍,自我提升,也帮助他人。

一个复杂 query 里可能包含多个视图和子查询(下称语句块),在它们的内部和外面还有很多谓词。

  • 谓词下推是指将外面的谓词条件下推到语句块内部,降低结果集大小、扩大优化空间;
  • 谓词上拉是指把谓词从一个语句块里复制提取出来,然后下压到其它语句块中。

本文是初级介绍文档,不深入探讨谓词下推、上拉的条件,仅聊一下它的意义:

  • 通过把 WHERE 条件传递到各个语句块,能降低各个阶段输出的数据量,使得后继的 join、group by 等操作代价更小;
  • WHERE 条件更多之后,可能会打开更多的访问空间,生成更优的计划
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值