WEB开发网
开发学院数据库Oracle 通过分析SQL语句的执行计划优化SQL(14) 阅读

通过分析SQL语句的执行计划优化SQL(14)

 2007-08-21 12:38:11 来源:WEB开发网   
核心提示:例2:假定A、B、C都是不是小表,且在A表上一个组合索引:A(a.col1,a.col2) ,通过分析SQL语句的执行计划优化SQL(14),注意a.col1列为索引的引导列,考虑下面的查询:selectA.col4from A , B , CwhereB.col3 = 10 andA.col1 = B.col1and

例2:

假定A、B、C都是不是小表,且在A表上一个组合索引:A(a.col1,a.col2) ,注意a.col1列为索引的引导列。

考虑下面的查询:

select A.col4
from  A , B , C
where B.col3 = 10  and A.col1 = B.col1 
and A.col2 = C.col2 and C.col3 = 5
Execution Plan
------------------------------------
  0   SELECT STATEMENT Optimizer=CHOOSE
  1  0 MERGE JOIN
  2  1 SORT (JOIN)
  3  2 NESTED LOOPS
  4  3 TABLE ACCESS (FULL) OF 'B'
  5  3 TABLE ACCESS (BY INDEX ROWID) OF 'A'
  6  5 INDEX (RANGE SCAN) OF
'INX_COL12A' (NON-UNIQUE)
  7  1 SORT (JOIN)
  8  7 TABLE ACCESS (FULL) OF 'C'
Statistics
--------------------------------------
     0 recursive calls
     8 db block gets
     6 consistent gets
     0 physical reads
     0 redo size
    551 bytes sent via SQL*Net to client
    430 bytes received via SQL*Net from client
     2 SQL*Net roundtrips to/from client
     2 sorts (memory)
     0 sorts (disk)
     6 rows processed

在表做连接时,只能2个表先做连接,然后将连接后的结果作为一个row source,与剩下的表做连接,在上面的例子中,连接顺序为B与A先连接,然后再与C连接:

B   <---> A <--->  C
col3=10        col3=5

1 2 3  下一页

Tags:通过 分析 SQL

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