WEB开发网
开发学院数据库Oracle Oracle语句优化规则汇总(5) 阅读

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

 2008-02-19 12:40:43 来源:WEB开发网   
核心提示:1. 用EXPLAIN PLAN 分析SQL语句 EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句,Oracle语句优化规则汇总(5), 通过分析,我们就可以知道ORACLE是怎么样连接表,其中操作号最小的将被最先处理,通过实践,使用什么方式扫描表(索引扫描或全表扫描

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

1 2 3  下一页

Tags:Oracle 语句 优化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接