Oracle执行计划。RBO优化器和CBO优化器。TABLE ACCESS FULL,TABLE ACCESS BY INDEX ROWID,TABLE ACCESS BY INDEX SCAN

通过PL/SQL Developer查看查询的执行计划

1. 什么是执行计划

执行计划就是一条查询语句在Oracle中的执行过程或访问路径的描述。

2. 配置执行计划需要显示的项

在这里插入图片描述

3执行计划的常用列字段解释

  • 基数(Cardinality) : Oracle 估计的当前操作的返回结果集行数
  • 字节(Bytes) :执行该步骤后返回的字节数.
  • 耗费(COST)、CPU耗费: Oracle 估计的该步骤的执行成本,用于说明SQL执行的代价,理论上越小越好(该值可能与实际有出入)
  • 时间(Time) : Oracle 估计的当前操作所需的时间:

最主要的还是查看耗费,用于SQL优化

4. 使用执行计划

通过工具启动执行计划。选中需要查看执行计划的查询语句,在工具栏中选择

Tools----->Explain Plan

或者是选择需要查看执行计划的sql语句按下F5。

在这里插入图片描述

5. 查看执行计划

在这里插入图片描述

5.1 执行顺序:

缩进最多的先执行:(缩进相同时,最上面的先执行)

5.2 访问表的几种方式(非全部)

  • TABLE ACCESS FULL (全表扫描)
  • TABLE ACCESS BY INDEX ROWID (通过ROWID的表存取)
  • TABLE ACCESS BY INDEX SCAN (索引扫描)

5.3 TABLE ACCESS FULL (全表扫描)

Oracle会读取表中所有的行,并检查每一行是否满足SQL语句中的Where限制条件;使用建议:数据量太大的表不建议使用全表扫描,除非本身需要取出的数据较多,占到表数据总量的5%~10%或以上

5.4 TABLE ACCESS BY INDEX ROWID ( 通过ROWID的表存取)

什么是ROWID?

ROWD是由Oracle自动加在表中每行最后的一列伪列,既然是伪列,就说明表中并不会物理存储ROWID的值。

你可以像使用其它列一样使用它,只是不能对该列的值进行增、删、改操作。

一旦一行数据插入后,则其对应的ROWID在该行的生命周期内是唯一的, 即使发生行迁移,该行的ROWID值也不变。

TABLE ACCESS BY INDEX ROWID

行的ROWID指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID可以快速定位到目标数据上,这也是Oracle中存取单行数据最快的方法;

5.5 TABLE ACCESS BY INDEX SCAN (索引扫描)

在索引块中,既存储每个素引的键值,也存储具有该键值的行的ROWID.

索引扫描其实分为两步

  1. 扫描索引得到对应的ROWID.

  2. 通过ROWID定位到具体的行读取数据。

五种索引扫描

  • INDEX UNIQUE SCAN (索引唯一扫描)
  • INDEX RANGE SCAN (索引范围扫描)
  • INDEX FULL SCAN (索引全扫描)
  • INDEX FAST FULL SCAN (索引快速扫描)
  • INDEX SKIP SCAN (索引跳跃扫描)

INDEX UNIQUE SCAN (索引唯一扫描)

针对唯一性索引(UNIQUE INDEX)的扫描,每次至多只返回一条记录;

表中某字段存在UNIQUE、PRIMARYKEY约束时,Oracle 常实现唯一性扫描 ;

INDEX RANGE SCAN (索引范围扫描)

使用一个索引存取多行数据;

发生索引范围扫描的三种情况:

1.在唯一索引列上使用了范围操作符(如: >, < ,<>, >=, <= ,between) ;

2.在组合索引上,只使用部分列进行查询(查询时必须包含前导列,否则会走全表扫描);

3对非唯一索引列上进行的任何查询;

INDEX FULL SCAN (索引全扫描)

进行全索引扫描时,查询出的数据都必须从索引中可以直接得到;

INDEX FAST FULL SCAN (索引快速扫描)

扫描索引中的所有的数据块,与NDEX FULL SCAN类似,但是一个显著的区别是它不对查询出的数据进行排序( 即数据不是以排序顺序被返回) ;

INDEX SKIP SCAN (索引跳跃扫描)

表有一个复合索引,且在查询时有除了前导列(索引中第一列)外的其他列作为条件;

6. Oracle的优化器

Oracle的优化器种类

  • RBO (RuleBased Optimization)基于规则的优化器
  • CBO (Cost-Based Optimization)基于代价的优化器

RBO优化器

RBO有严格的使用规则,只要按照这套规则去写SQL语句,无论数据表中的内容怎样,也不会影响到你的执行计划。换句话说,RBO对数据“不敏感”,它要求SQL编写人员必须要了解各项细则。RBO一直沿用至ORACLE 9i,从ORACLE 10g开始,RBO已经彻底被抛弃。

CB0优化器

CBO是一种比RBO更加合理、可靠的优化器,在ORACLE 10g中完全取代RBO,CBO通过计算各种可能的执行计划的“代价”,即COST,从中选用COST最低的执行方案作为实际运行方案。

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Oracle性能优化篇之执行计划详解》是一篇介绍Oracle数据库性能优化中的关键概念和技术的文章。通过深入讲解Oracle执行计划的相关内容,帮助读者更好地理解和优化数据库查询性能。 在Oracle数据库中,执行计划是查询优化器生成的一种执行方案,用于指导数据库在执行SQL语句时的操作步骤和顺序。执行计划会根据表、索引、统计信息等内容,通过优化器的选择逻辑来生成,从而提高查询效率和性能。 《Oracle性能优化篇之执行计划详解》首先介绍了执行计划的基本组成结构,包括操作、访问方法、操作对象等。然后深入解析了执行计划的生成过程,包括Cost-Based Optimizer(CBO)和Rule-Based Optimizer(RBO)两种优化器的工作原理和区别。 接着,文章详细讲解了执行计划的查看方法和解读技巧。通过使用Oracle提供的多种工具和命令,如EXPLAIN PLAN、AUTOTRACE等,可以获取和分析执行计划,并根据结果进行性能优化。同时,文章还解释了执行计划中的关键指标和信息,如Cost、Cardinality、Bytes等,以及其对性能的影响和解决方法。 除此之外,《Oracle性能优化篇之执行计划详解》还介绍了一些常见的执行计划优化技术和策略。如索引的优化、统计信息的收集、SQL语句的调整等,通过优化执行计划中的关键因素,可以提高数据库查询效率和性能。 通过阅读《Oracle性能优化篇之执行计划详解》,读者可以深入了解Oracle数据库性能优化中的执行计划概念和技术,掌握相关工具和方法,从而更好地优化数据库查询性能。该文章对于数据库开发人员、DBA等有着重要的参考价值,帮助他们解决实际问题,提高数据库系统的性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

傻啦猫@_@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值