Oracle语句优化规则汇总(5)

豆豆网   技术应用频道   2008年02月19日    社区交流

本文详细介绍Oracle语句优化规则汇总(5)

  1. 用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* WHERE emp.deptno = dept.deptno
SQL> set autotrace traceonly /*traceonly 可以不显示执行结果*/
SQL> /
14 rows selected.
Execution Plan
----------------------------------------------------------
 0   SELECT STATEMENT Optimizer=CHOOSE
 1  0 NESTED LOOPS
 2  1  TABLE ACCESS (FULL) OF 'EMP'
 3  1  TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'
 4  3    INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
Statistics
----------------------------------------------------------
      0 recursive calls
      2 db block gets
     30 consistent gets
      0 physical reads
      0 redo size
    2598 bytes sent via SQL*Net to client
    503 bytes received via SQL*Net from client
      2 SQL*Net roundtrips to/from client
      0 sorts (memory)
      0 sorts (disk)
     14 rows processed

来源:豆豆网转载    作者:IT专家网 Peak Wong    责编:豆豆技术应用

正在加载评论...