其中前四种方法使用得尤为普遍:
语法是依次执行如下两条命令:
explain plan for + 目标SQL
select * from table(dbms_xplan.display)
收集统计信息:
exec dbms_stats.gather_table_stats(ownname=>‘SCOTT‘,tabname=>‘EMP‘,estimate_percent=>100,cascade=>true,method_opt=>‘for all columns size 1‘);
共四种方法如下:
--结合explain plan for 使用
1.select * from table(dbms_xplan.display); 执行计划可能不准确
--用于查看刚刚执行过的SQL执行计划。advanced也可以改为使用all,但是advanced显示结果更详细
2.select * from table(dbms_xplan_cursor(null,null,‘advanced‘)); 执行计划准确
--用于查看指定SQL的执行计划
3.select * from table(dbms_xplan_cursor(‘sql_id/hash_value‘,child_cursor_number,‘advanced‘)); 执行计划准确
--awr报告
4.select * from table(dbms_xplan.display_awr(‘sql_id‘)); 执行计划准确
所有使用AUTOTRACE的执行计划都可能不准确
在SQLPLUS中设置AUTOTRACE开关的语法如下所示:
SET AUTOTRACE {OFF|ON|TRACEONLY} [EXPLAIN] [STATISTICS]
原文:https://www.cnblogs.com/studyking/p/11613606.html