Oracle中使用DBMS_XPLAN处理执行计划详解
DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包;在以前查看SQL执行计划的时候,我都是使用setautotrace命令,不过现在看来,DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。
这5个函数分别对应不同的显示计划的方式,DBMS_XPLAN包不仅可以获取解释计划,它还可以用来输出存储在AWR,SQL调试集,缓存的SQL游标,以及SQL基线中的语句计划,实现如上的功能,通常会用到一下5个方法:
1.DISPLAY
2.DISPLAY_AWR
3.DISPLAY_CURSOR
4.DISPLAY_PLAN
5.DISPLAY_SQL_PLAN_BASELINE
6.DISPLAY_SQLSET
下面将重点讨论关于DBMS_XPLAN包在解释计划和执行计划上的应用。
来看一个经常使用的查看某条语句的解释计划示例:
SQL>explainplanforselect*fromscott.emp;
Explained.
SQL>select*fromtable(dbms_xplan.display);
PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- Planhashvalue:3956160932
-------------------------------------------------------------------------- |Id |Operation |Name|Rows |Bytes|Cost(%CPU)|Time | -------------------------------------------------------------------------- | 0|SELECTSTATEMENT | | 14| 532| 3 (0)|00:00:01| | 1| TABLEACCESSFULL|EMP | 14| 532| 3 (0)|00:00:01| --------------------------------------------------------------------------
8rowsselected.
--对应autotrace实现 SQL>setautotracetraceonlyexplain