该函数的语法:
DBMS_XPLAN.DISPLAY_CURSOR(
   sql_id        IN VARCHAR2 DEFAULT NULL,
   child_number IN NUMBER    DEFAULT NULL,
   format        IN VARCHAR2 DEFAULT 'TYPICAL');

举个例子 执行一个简单查询:
SQL> select count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id;

COUNT(0)
----------
    118908

如果我们想获取该语句的实际执行计划,通过下列步骤:

1、查询v$sql视图,找到该语句的sql_id(注意哟,必须要确保你要查询的sql语句还在shared pool):
SQL> select sql_id from v$sql where sql_text=
2 'select count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id';

SQL_ID
-------------
c9cxqvr3q4tjd

2、调用dbms_xplan包,查看该语句执行时的实现执行计划:
SQL> select * from table(dbms_xplan.display_cursor('c9cxqvr3q4tjd'));

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID c9cxqvr3q4tjd, child number 0
-------------------------------------
select count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id

Plan hash value: 2559475106

-----------------------------------------------------------------------------------------------------------
| Id | Operation              | Name                     | Rows | Bytes |TempSpc| Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------------------
......

事实上dbms_xplan.display_cursor也非常灵活,如果执行的统计信息也被收集的话,还可以显示出每一步实际的花费时间等信息,例如:

SQL> select /*+gather_plan_statistics*/ count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id;

COUNT(0)
----------
    118908

--简单获取,不需要sqlid

select  *  from   table ( dbms_xplan . display_cursor ( null , null , ' ALLSTATS LAST ' )) ;

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID 91w1ug6vc9pxh, child number 0
-------------------------------------
select /*+gather_plan_statistics*/ count(0) from cat_product cp,cat_drug cd where cp.medical_id=cd.id

Plan hash value: 2559475106

-----------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation              | Name                     | Starts | E-Rows |E-Bytes|E-Temp | Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
-----------------------------------------------------------------------------------------------------------------------------------------------------
...

E-Rows是优化器评估的行数,A-Rows是实际的行数,这个对于判断优化器的选择正确与否比较有用!

dbms_xplan.display_cursor 获取执行过的sql的执行计划相关推荐

  1. mysql oracle 查询语句执行顺序_MySQL sql语句执行顺序

    (8)     DISTINCT (1)     FROM (3)      JOIN (2)     ON (4)     WHERE (5)     GROUP BY (6)     HAVING ...

  2. mysql sql先后执行_MySQL中SQL语句执行顺序

    (7) SELECT (8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) ...

  3. mysql sql 子查询 执行顺序_MySQL,SQL语句执行顺序

    1.SQL执行顺序: select 考生姓名, max(总成绩) asmax总成绩fromtb_Gradewhere 考生姓名 is not null group by考生姓名having max(总 ...

  4. bs架构与cs架构的区别_Oracle vs Mysql--架构、sql查询执行流程及SQL解析顺序区别说明...

    概述 之前分享的主要是Oracle上的一些内容,那么mysql又有哪些地方不一样呢?下面从MySQL总体架构.sql查询执行流程和语句执行顺序来看一下.. 01 架构总览 下面看一下mysql的架构图 ...

  5. oracle和mysql文件怎么打开_Oracle vs Mysql--架构、sql查询执行流程及SQL解析顺序区别说明-sql文件怎么打开...

    概述 之前分享的主要是Oracle上的一些内容,那么mysql又有哪些地方不一样呢?下面从MySQL总体架构.sql查询执行流程和语句执行顺序来看一下.. 01 架构总览 下面看一下mysql的架构图 ...

  6. mysql latid1_【转】mysql触发器的实战经验(触发器执行失败,sql会回滚吗) | 学步园...

    1   引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

  7. Oracle SQL语句执行过程

    前言 QQ群讨论的时候有人遇到这样的问题:where子句中无法访问Oracle自定义的字段别名.这篇 博客就是就这一问题做一个探讨,并发散下思维,谈谈SQL语句的执行顺序问题. 问题呈现 直接给出SQ ...

  8. oracle的sql执行计划语句,最权威Oracle获取SQL语句执行计划大全

    该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...

  9. 【DB笔试面试600】在Oracle中,如何获取SQL历史执行计划?

    ♣题目 部分 在Oracle中,如何获取SQL历史执行计划? ♣答案部分 历史执行计划只能从AWR中获取,如果AWR没有记录的话,那么就无法获取历史执行计划了,获取历史执行计划的命令如下所示: 1SE ...

最新文章

  1. 小扎的野心不止做社交 市政厅的上线说明了这一点
  2. Social learning With Bayesian Agent and Random Decision Making
  3. 《自然》:修复AI神经网络的缺陷
  4. 怎么用python处理excel文件-用python处理excel文件有多轻松?工作从未如此简单
  5. 现代操作系统: 第九章 安全
  6. jzoj3461-小麦亩产一千八【斐波那契数列】
  7. python实例讲解wxpythonhyh123_Python实例讲解 -- wxpython 基本的控件 (按钮)
  8. EditThisCookie使用
  9. Linux平台上SQLite数据库教程(二)——C语言API介绍
  10. C++远航之封装篇——深拷贝、浅拷贝
  11. html渐变编织背景,【报Bug】uniapp设置了css渐变背景色编译时会报错
  12. Docker安装MySQL教程
  13. 【CCCC】L2-021 点赞狂魔 (25分),,模拟水题,map数组,间接排序
  14. 前端程序员 学习书籍推荐
  15. 矩阵按键之行列式扫描
  16. 历史上的今天:乔布斯辞去苹果CEO一职;Windows 95 发布
  17. Linux安装MySQL遇到的问题及其解决方式
  18. RDS2016 Multipoint Role
  19. Linux中chown、chmod、chgrp的区别和用法
  20. SmartFoxServer 2X 简介

热门文章

  1. Esper应用以及原理解析
  2. kSum,实现方式,动态规划
  3. js中onload和jQuery中的ready区别
  4. 嵌入式学习路线怎么学,如何学习嵌入式系统
  5. c windows控制台输出颜色文字
  6. 单链表的python实现
  7. Nginx rewrite使用
  8. OpenCV中findContours函数的使用
  9. 算法基础:最大递减数问题(Golang实现)
  10. 基于JDK7 NIO2的高性能web服务器实践之二(转)