dbms_xplan之display函数的使用(二)

2014-11-24 08:53:44 · 作者: · 浏览: 2
控制包含查询块与别名的显示部分
bytes 控制执行计划表中字段bytes的显示
cost 控制执行计划表中字段cost的显示
note 控制包含注释信息的显示部分
outline 控制包含提纲信息的显示部分
parallel 控制包含并行处理信息的提示
partition 控制并行处理信息的显示,尤其是执行计划表中字段TQ、IN-OUT、PQ Distrib的显示
peeked_binds 控制包含绑定变量窥探部分的显示。仅当生成执行计划时使用了绑定变量是可见
predicate 控制包含谓词filter和access显示部分
projection 控制包含投影信息的显示部分
remote 控制远程执行的SQL语句的显示
rows 控制执行计划表中字段rows的显示

三、演示使用display函数获取执行计划(演示版本 Oracle 10g R2)
1、使用EXPLAIN PLAN加载预估的执行计划
[sql] view plaincopyprint
SQL> EXPLAIN PLAN SET STATEMENT_ID='TSH' FOR
2 SELECT *
3 FROM emp e, dept d
4 WHERE e.deptno = d.deptno
5 AND e.ename = 'SMITH';

Explained.
2、使用display函数查看执行计划
[sql] view plaincopyprint
/*------------- 使用了basic模式,且指定了table_name,statement_id -----------------*/
/**************************************************/
/* Author: Robinson Cheng */
/* Blog: http://blog.csdn.net/robinson_0612 */
/* MSN: robinson_0612@hotmail.com */
/* QQ: 645746311 */
/**************************************************/
SQL> SET LINESIZE 130
SQL> SELECT *
2 FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE','TSH','BASIC'));

PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------
Plan hash value: 351108634

------------------------------------------------
| Id | Operation | Name |
------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | NESTED LOOPS | |
| 2 | TABLE ACCESS FULL | EMP |
| 3 | TABLE ACCESS BY INDEX ROWID| DEPT |
| 4 | INDEX UNIQUE SCAN | PK_DEPT |
------------------------------------------------

11 rows selected.

/*---------------- 使用basic +predicate模式--------------------*/
SQL> set pagesize 0
SQL> select * from table(dbms_xplan.display(null,'TSH','basic +predicate'));
Plan hash value: 351108634

------------------------------------------------
| Id | Operation | Name |
------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | NESTED LOOPS | |
|* 2 | TABLE ACCESS FULL | EMP |
| 3 | TABLE ACCESS BY INDEX ROWID| DEPT |
|* 4 | INDEX UNIQUE SCAN | PK_DEPT |
------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - filter("E"."ENAME"='SMITH')
4 - access("E"."DEPTNO"="D"."DEPTNO")

17 rows selected.

/*--------------- 使用typical模式当format为null时的缺省模式 ------------*/
SQL> select * from table(dbms_xplan.display(null,'TSH','typical'));
Plan hash value: 351108634

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