Oracle:解释plan_table查询执行顺序

时间:2013-09-22 17:03:01

标签: oracle

我正在尝试理解Oracle plan_table并运行一些SQL语句来填充plan_table ...从plan_table中生成的语句中,我如何识别语句的执行顺序。

enter image description here

1 个答案:

答案 0 :(得分:5)

直接从PLAN_TABLE中选择有点“弃用”。至少现在这是绝对不必要的。您可以使用dbms_xplan查看已解释声明的执行计划:

explain plan for
select *
from your_table;;

select * 
from table(dbms_xplan.display);

手册中的更多详细信息:http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_xplan.htm#CACICEDJ

本手册还包含一个示例(分层)SELECT语句,用于直接从PLAN_TABLE检索内容:

SELECT id, LPAD(' ',2*(LEVEL-1))||operation operation, options,
   object_name, object_alias, qblock_name, position 
FROM plan_table 
START WITH id = 0 AND statement_id = 'xxxxx'
CONNECT BY PRIOR id = parent_id AND statement_id = 'xxxxx'
ORDER BY id;

以上摘自:http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_9010.htm#sthref5965

您需要将'xxxx'替换为您正在使用的statement_id(在set statement_id语句中需要explain plan