你的位置:首页 > 软件开发 > 数据库 > Oracle_SQL执行计划

Oracle_SQL执行计划

发布时间:2016-05-27 07:00:21
获取SQL执行计划的常见几种方法一、获取库缓冲区中的执行计划1. 查询v$sql动态性能视图,找到要查询的SQL语句的sql_id。2. 调用dbms_xplan包的display_cursor方法,查看该语句执行时的执行计划。例如:SELECT dname FROM e ...

获取SQL执行计划的常见几种方法

一、获取库缓冲区中的执行计划

1. 查询v$sql动态性能视图,找到要查询的SQL语句的sql_id

2. 调用dbms_xplan包display_cursor方法,查看该语句执行时的执行计划。

例如:

SELECT dname FROM emp, dept WHERE emp.deptno=dept.deptno;

SELECT sql_id FROM v$sql WHERE sql_text='SELECT dname FROM emp, dept WHERE emp.deptno=dept.deptno';

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('00gyc848k0q4v'));

直接调用display_cursor,不指定sql_id,就可以将刚刚当前会话执行的SQL命令执行计划从library cache中查询出来。

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());

注意:display_cursor支持format参数,可以进行详细执行计划信息的抽取。

只能在sqlplus或者sqlplusw上使用,如果是TOAD、PL/SQL develop等其它第三方工具,可能调用程序包dbms_xplan不能正常使用。

二、获取SQL预执行的执行计划

Explain plan for 命令在Oracle中,可以对后面的SQL语句进行直接的解析,将执行计划保存在一个plan_table的中间表中,之后通过dbms_xplan包display方法进行获取。

例如:

EXPLAIN PLAN FOR SELECT dname FROM emp, dept WHERE emp.deptno=dept.deptno;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());

通过指定参数,Explain plan for命令可以显示更详细的信息。

例如:

EXPLAIN PLAN FOR SELECT dname FROM emp, dept WHERE emp.deptno=dept.deptno;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(null, null, 'advanced'));

使用EXPLAIN PLAN FOR 需要注意的是:

explain plan for是单纯对SQL语句进行优化器分析,获取并产生到的执行计划。

这个过程中,并没有真正执行。

所以,生成的执行计划有时候会可能有问题,而且进行统计的信息情况没有autotrace的准确度高。

三、使用autotrace工具分析SQL的执行计划

1.配置autotrace工具

配置AUTOTRACE 的方法不止一种,以下是其中一种的方式:

(1)cd [ORACLE_HOME]/sqlplus/admin;

原标题:Oracle_SQL执行计划

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。