【Oracle】看懂执行计划之基于规则的优化器(RBO)

本文介绍了Oracle中的基于规则的优化器(RBO),它通过预定义的规则选择执行效率最高的SQL执行路径。RBO将执行路径分为1到15级,等级1代表最高效,15代表最低效。然而,RBO存在调整困难、易受SQL编写方式和数据字典缓存顺序影响、不支持新特性的缺点。为优化执行计划,可以尝试等价SQL改写、调整数据字典缓存顺序或改变SQL中对象的顺序。
摘要由CSDN通过智能技术生成

【Oracle】看懂执行计划之基于规则的优化器(RBO)

简介

  基于规则的优化器(RBO)是通过编码在 Oracle 数据库中的一系列固定的规则,来决定目标 SQL 的执行计划。Oracle 事先给各种类型的执行路径定一个等级,从 1 到 15,等级 1 对应执行路径的执行效率最高,等级 15 对应执行路径的执行效率最低。对于等级相同的执行计划,oracle 根据目标对象在数据字典中缓存的顺序判断选择哪一种执行计划。在决定目标 SQL 的执行计划时,RBO 会从该 SQL 的诸多执行路径中选择一条等级最低的执行路径来作为其执行计划。
  RBO 中等级 1 对应的执行路径是“single row by rowid(通过 rowID 来访问单行数据)”,等级 15 所对应的执行路径时“full table scan(全表扫描)”。

RBO 的缺陷

  • RBO 的执行计划很难调整
  • 目标 SQL 的写法及各个对象在该 SQL 文本中出现的先后顺序都会影响执行计划
  • Oracle 数据中的很多新特性、功能,均不支持 RBO
  • 没有考虑目标 SQL 所涉及对象的实际数据量

RBO 执行计划的调整

  • 等价改写 SQL

    Number 或 Date 类型的字段加上 0,Varchar 类型拼接上空字符’’,使本来走索引的现在不走索引,对于多表连接的改变 form 后表的先后顺序可以影响表连接顺序

  • 如果出现多条等级值相同的执行路径,改变目标 SQL 中涉及相关对象数据字典缓存(Data Dictionary Cache)的缓存顺序

  • 如果出现多条等级值相同的执行路径,改变目标 SQL 中涉及相关对象在 SQL 文本中出现的先后顺序


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值