Oracle sql的优化

相信大家在百度的时候会经常看到许多下面图片中显示的内容:
在这里插入图片描述
……
这里有一大堆很详细的介绍,如果想了解大家可以移步


https://blog.csdn.net/m0_51740882/article/details/125082830
自行阅读。

这么一大串,有人知道是在讲什么吗?
明眼人一看就是在说一件事,怎么在SQL查询 时使用到索引。
真的就这么简单吗?SQL使用了索引就能减少资源的损耗,缩短查询速度?
不不不……

我们经常在实践过程中发现即使我们的SELECT能规避的以上所说的所有的坑,还是跑不快,为什么?
那是因为,我们只知道ORACLE查询时索引可以帮助我们的SELECT语句跑的更快些,而不知道为什么会让它跑这么快。
这就要提到ORACLE的两大优化器:CBO&RBO。
RBO是基于规则的优化器,它所用的规则是一段硬编码在ORACLE代码中的,RBO会从目标SQL诸多可执行路径中选择一条做为其可执行计划。它设定了15个等级,从1-15级从小到大排列执行效率,RBO会选择一条执行等级傎最低的执行路径作为其执行计划。但是,RBO从ORACLE10g开始不再被支持,虽然还可以通过修改优化器模式或使用ROLE Hint继续使用它。但是想也知道现在没人会“自找麻烦”放着CBO这么方便的优化器不用。
CBO是基于成本的优化器,从目标SQL诸多可执行路径中选择一条执行成本最小的做为一条可执行计划。它认为那些消耗系统I/O、CPU资源最少的执行路径就是当前情况下的最佳选择。
到这里我们知道ORACLE数据库里的SQL优化的终极目标是缩短目标SQL语句的执行时间,要达到这个目的,只有以下三种方法可选择:
1、降低目标SQL语句的资源消耗
2、并行执行目标SQL语句
3、平衡系统的资源消耗
那怎么实现呢?这就需要对ORACLE SQL优化的本质:基于对CBO和执行计划的理解运用。
虽然,ORACLE数据库里大部分SQL优化问题都可以通过增加或减少索引的方法来解决,但不是全部。我们需要在理解CBO和执行计划的工作 方式中灵活的使用。如:
1、用合适的索引来避免不必要的全表扫描。
2、用合适的索引来避免不必要的排序
3、用合适的函数索引来避免看似无法避免的全表扫描。
4、重新设计索引来避免不必要的全表扫描
在做到以上四点的同时,还需要在Oacle 里SQL优化时需要联系实际的业务和适时使用绑定变量。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值