oracle sql 高级编程学习笔记(十七)

查看任何之前已经执行过的sql语句保存在库高速缓存中的执行计划,最简单方法就是使用dbms_xplan.display_curor函数
使用 gather_plan_statistics 提示 则在sql执行后,会在v$sql_plan_statistics_all视图中查到SQL的执行统计信息,例如逻辑读,物理读取次数,物理写入次数以及每一个运算在一行数据上的运行时间。 或者也可以将statistics_level 实例参数的值设置为all,抓取这些统计信息确实增加了语句执行成本,所以不必总是把这个功能打开。而hint提示仅仅是在使用的语句上生效。gather_plan_statistics提示会显示Starts E-row(期望返回行数) ,A_rows

select  /*+gather_plan_statistics*/ e.empno,e.ename from  emp  e where e.ename='KING';

set serveroutput off;
//serveroutput 如果是打开的,都会隐式的调用dbms_output 如果没有将 serveroutput 关闭
//那么最后执行的一条语句将会是dbms_output的调用.将不能返回所执行sql语句,而是试图给你
//dbms_output调用所使用的计划

 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null,'ALLSTATS LAST'));

这里写图片描述

不使用提示 显示统计信息

这里写图片描述
可以看到警告信息中表明如何获取统计信息。

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null,null,'ALLSTATS LAST'));

还可以使用sql_id child_number取值

sql_id child_number 通过V$sql获得

select  t.SQL_TEXT,t.SQL_ID,t.CHILD_NUMBER from  v$sql t  where t.SQL_TEXT like '%gather_plan_statistics%';

这里写图片描述

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('692za5rczkx3w',0,'ALLSTATS LAST'));

同样也可以获得执行计划

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜菜的中年程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值