第四章 运筹帷幄——左右SQL执行计划妙招

文章探讨了左右SQL执行计划的重要性,特别是在高峰期避免系统开销和解决Oracle的潜在问题。它提到了hint的使用可以强制改变执行计划,但需谨慎,因为数据变化可能导致原本的hint不再最优。此外,文章还讨论了rownum在实体化视图中的角色,以及非hint方式影响执行计划的考虑因素。
摘要由CSDN通过智能技术生成

参考《收获,不止SQL优化》作者: 梁敬彬 / 梁敬弘

一、左右SQL执行计划的意义

为什么要左右SQL的执行计划?
1、可以在高峰期临时解决问题,避免因收集信息带来的开销。
如果统计信息不准确,影响了执行计划,需要重新收集,而此时业务繁忙,重新收集影响生产,但这条SQL现在又急于优化,这个时候就考虑如何在不影响生产的情况下左右SQL的执行计划。
2、Oracle的bug导致执行计划没有选择最优的那一个,而你知道最优的执行计划,这个时候就可以人工干预了。

二、左右执行计划的方法

在这里插入图片描述

三、习题

习题1:说说你对 hint 的认识。
hint用于强制地改变或者说固定执行计划,但是hint要慎用,因为一旦你使用了hint且生效了,执行计划固定,随着表的数据量变化,其他索引的新增等,可能最优的执行计划已经改变,固定了反而会降低性能。

习题2:说说你对 rownum 实体化视图优化方法表连接的认识。
一个子查询里如果有rownum字段,那么该子查询一定是一起执行,得出个结果集,再与其他表关联等。如果子查询里没有rownum字段,那么子查询里的表不一定一起执行,某些与外面有关联的表可能会先与外表关联。
数据库可能会选择后者作为执行计划,但是效率可能不如前者,为了让子查询里的表一起执行出结果集与外表再关联,就可以考虑用rownum 实体化的方法。

习题3:简要谈谈你对非 hint 方式影响执行计划的认识。
如上图思维导图所示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值