[Oracle] DBMS_XPLAN.DISPLAY_CURSOR

博客首页 » Oracle DBMS_XPLAN.DISPLAY_CURSOR

发布于 09 Dec 2015 02:39
标签 blog
DBMS_XPLAN.DISPLAY_CURSOR是Oracle中查看SQL实际实行计划的利器。

DBMS_XPLAN.DISPLAY_CURSOR有三个参数
SQL_ID
CHILD_NUMBER
FORMAT

使用步骤如下:

-- 执行
SQL> SELECT /* the sql */ ename, dname 
FROM dept d join emp e USING (deptno);
 
-- 找sql_id和child_number
SQL> select sql_id, child_number from v$sql
where sql_text like '%the sql%';
 
SQL_ID         CHILD_NUMBER
----------     -----------------------------
gwp663cqh5qbf   0
 
-- 查看执行计划
SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(('gwp663cqh5qbf',0));
 
SELECT /* the sql */ ename, dname 
FROM dept d JOIN emp e USING (deptno);
 
----------------------------------------------------------------------------
| Id  | Operation           | Name | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |       |       |     7 (100)|          |
|   1 |  SORT GROUP BY      |      |     4 |    64 |     7  (43)| 00:00:01 |
|*  2 |   HASH JOIN         |      |    14 |   224 |     6  (34)| 00:00:01 |
|   3 |    TABLE ACCESS FULL| DEPT |     4 |    44 |     3  (34)| 00:00:01 |
|   4 |    TABLE ACCESS FULL| EMP  |    14 |    70 |     3  (34)| 00:00:01 |
----------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - access("E"."DEPTNO"="D"."DEPTNO")
 
-- 用一个SQL完成
SQL> SELECT t.*
  FROM v$sql s,
       table(DBMS_XPLAN.DISPLAY_CURSOR(s.sql_id, s.child_number)) t
 WHERE sql_text LIKE '%the sql%';

本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用,仅有一个特殊要求,请用链接方式注明文章引用出处及作者。请协助维护作者合法权益。


系列文章

文章列表

  • Oracle DBMS_XPLAN.DISPLAY_CURSOR

这篇文章对你有帮助吗,投个票吧?

rating: 0+x

留下你的评论

Add a New Comment