Oracle用EXPLAIN PLAN分析SQL语句的方法是本文我们主要要介绍的内容,我们知道,EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句。 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称。
你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果是用缩进的格式排列的, 最内部的操作将被***解读, 如果两个操作处于同一层中,带有最小操作号的将被首先执行。
NESTED LOOP是少数不按照上述规则处理的操作,正确的执行路径是检查对NESTED LOOP提供数据的操作,其中操作号最小的将被***处理。
通过实践,感到还是用SQLPLUS中的SET TRACE 功能比较方便。
举例:
SQL>list
1 SELECT *
2 FROM dept, emp
3* WHEREemp.deptno= dept.deptno
SQL>set autotrace traceonly /*traceonly 可以不显示执行结果*/
SQL>/
14 rows selected.
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENTOptimizer=CHOOSE
1 0 NESTED LOOPS
2 1 TABLE ACCESS (FULL) OF 'EMP'
3 1 TABLE ACCESS (BY INDEX ROWID) OF