暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

display_cursor format

原创 不吃草的牛_Nick 2022-06-14
523

-- 使用ALL 来显示解释计划的全部信息

explain plan for select xxxxxx;
select * from table(dbms_xplan.display(format=>'ALL'));


-- 去除执行计划上的字节数和成本统计信息

explain plan for select xxxxxx;

select * from table(dbms_xplan.display_cursor(null,null,format=>'ALLSTATS LAST -COST -BYTES'));


使用all 与advanced 显示全部或高级的执行计划
(1) select * from table(dbms_xplan.display_cursor(null, null, 'all'));
(2) select * from table(dbms_xplan.display_cursor(null, null, 'advanced'));
(3) select * from table(dbms_xplan.display_cursor('sql_id/hash_value',child_cursor_number, 'advanced'));

(2)和(3)的前提则是SQL 的执行计划还在共享池中,具体讲是在库缓存中。如果已经被age out 交换出共享池,则不能用这两种方法了主要用于SQLPLUS 中查看刚执行过SQL 的执行计划。


接下来,第三个参数使用'all':
select * from table(dbms_xplan.display_cursor(null, null, 'all'));

Outline Data 主要是执行SQL 时用于固定执行计划的内部HINT 组合,可以将这部分内容摘出来加到目标SQL 中以固定其执行计划。


查看多条执行计划
select * from table(dbms_xplan.display_cursor('sql_id/hash_value',child_cursor_number, 'advanced'));
select * from table(dbms_xplan.display_cursor('sql_id/hash_value',child_cursor_number));
select sql_text,sql_id,hash_value,child_number from v$sql where sql_text like 'select xxxxxx%'
select * from table(dbms_xplan.display_cursor('bszr0z8uhc948', 1));
select * from table(dbms_xplan.display_cursor('889595016', 0));


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论