一. 背景介绍
当我们质疑一条SQL语句执行缓慢,进而尝试是否有改进可能性的时候。我们往往需要查看这条SQL语句对应的执行计划,那么在Oracle中如何获取执行计划是本文要介绍的内容。
二. 获取方法
oracle提供四种获取执行计划的方法:
1. 执行SQL语句explain plan,然后查询结果输出表(普遍方法)
2. 查询一张动态性能视图
3. 查询自动工作量库或者statspack表
4. 启动提供执行计划的跟踪功能(比如启动sql_trace)
三. SQL语句EXPLAIN PLAN(方法一)
这个命令是以一条SQL语句作为输入,得到这条SQL的执行计划,并且将结果输出到计划表中。语法如下:
explain plan for select count(*) from user_objects /*解析获取执行计划*/
select * from table (dbms_xplan.display) /*查询计划表显示执行计划*/
如果查看的是绑定变量SQL的执行计划,SQL必须是变量的形式,比如:
explain plan for select * from emp where empno = :p_value.
但是,存在一个问题,由于命令explain plan不能使用绑定变量窥测,也就是explain plan显示的执行计划,可能不是真正的执行计划。也就是说,如果使用了绑定变量,那么explain plan生成的执行计划是不可靠的(当然,这是针对绝对可靠而言,其实已经很可靠了)