oracle 数据库 执行计划

oracle数据库执行计划

学习执行计划之前,先了解一下oracle 的优化器。在oracle9i及之前的版本中,大部分优化系统使用的基于规则的优化器(RBO)。从oracle9.1开始官方名义上就不再支持RBO,而是使用基于成本的优化器(CBO)。

执行计划

执行计划可以显示出sql语句的执行方式和执行顺序,如何查看sql语句的执行计划:
  1. 通过plsql选中要查看执行计划的sql语句,按F5可以直接跳转到执行计划界面。


1)descriotion是sql执行的顺序 越靠右的越先执行同级别上面的先执行

  1. 通过plsql,
    1) explain for [sql语句]
    在这里插入图片描述
    2)select * from table(dbms_xplan.display);在这里插入图片描述
    3) 查看sql执行计划
    operation:sql执行的顺序 越靠右的越先执行同级别上面的先执行

    3.通过sqlplus,使用sqlplus连接数据库之后
    1) explain for [sql语句]
    在这里插入图片描述

    2)select * from table(dbms_xplan.display);
    在这里插入图片描述

3) 查看sql执行计划
Operation:sql执行的顺序 越靠右的越先执行同级别上面的先执行
Rows :执行sql之后预计返回多少行
Cost:

4.Autotrace

  1. set autotrace on;
    在这里插入图片描述
    2)想查看的sql
    在这里插入图片描述
    3)查看执行计划和autotrace收集的信息
    在这里插入图片描述
    autotrace 主要包含以下信息:
  • recursive calls:递归调用次数
  • db block gets:当前读的块数
  • consisent:一直性读的块数和当前读的块数加起来为逻辑读的次数
  • physical read:执行sql的过程中,从硬盘上读取的数据块个数
  • redo size:执行sql的过程中,产生的redo日志大小
  • bytes set via sqlnet to client:通过sqlnet发送给客户端的字节数
  • bytes received via sqlnet from client:通过sqlnet接收客户端的字节数
  • sorts(memory):在内存中发生排序
  • sorts(disk):不能在内存中发生的排序,需要硬盘来协助
  • rows processed:结果的记录数

总结

对于执行计划而言,其中重要的是Operation、Name、Rows、Bytes这四列,其他并没有太大的实际意义,尤其是cost和time特别容易误导新手。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值