日期:2014-05-16  浏览次数:20548 次

Oracle--执行计划

一、什么是执行计划(explain plan)?
执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。?

二、如何查看执行计划?
1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。?
? ? ?很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示?

? ? ?
?

2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均可)下执行下面步骤?

SQL>EXPLAIN PLAN FOR 
SELECT * FROM SCOTT.EMP; --要解析的SQL脚本 
SQL>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); 


?

?3: 在SQL*PLUS下(有些命令在PL/SQL下无效)执行如下命令:

SQL>SET TIMING ON             --控制显示执行时间统计数据 
SQL>SET AUTOTRACE ON EXPLAIN       --这样设置包含执行计划、脚本数据输出,没有统计信息 
SQL>执行需要查看执行计划的SQL语句 
SQL>SET AUTOTRACE OFF           --不生成AUTOTRACE报告,这是缺省模式 
SQL> SET AUTOTRACE ON           --这样设置包含执行计划、统计信息、以及脚本数据输出 
SQL>执行需要查看执行计划的SQL语句 
SQL>SET AUTOTRACE OFF 
SQL> SET AUTOTRACE TRACEONLY      --这样设置会有执行计划、统计信息,不会有脚本数据输出 
SQL>执行需要查看执行计划的SQL语句 
SQL>SET AUTOTRACE TRACEONLY STAT --这样设置只包含有统计信息 
SQL>执行需要查看执行计划的SQL语句 

?

?

通过下面脚本查询到trace日志信息?

SELECT T.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' || 
P.SPID || '.trc' TRACE_FILE_NAME 
FROM 
( SELECT P.SPID 
FROM V$MYSTAT M, V$SESSION S, V$PROCESS P 
WHERE M.STATISTIC# =1 
AND S.SID = M.SID 
AND P.ADDR = S.PADDR 
) P, 
( SELECT T.INSTANCE 
FROM V$THREAD T, V$PARAMETER V 
WHERE V.NAME ='thread' 
AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE)) 
) I, 
(SELECT VALUE FROM V$PARAMETER WHERE NAME='user_dump_dest') T 

?

?

三、看懂执行计划?
1.执行顺序?
执行顺序的原则是:由上至下,从右向左?
由上至下:在执行计划中一般含有多个节点,相同级别(或并列)的节点,靠上的优先执行,靠下的后执行?

友情链接: 爱易网 云虚拟主机技术 云服务器技术 程序设计技术 开发网站 APP开发教程
Copyright © 2013-2024 爱易网页 当前在线:374人  网站在4分46秒内访问总人数:1374人 当前 71.66%  粤ICP备18100884号-2