科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道通过分析SQL语句的执行计划优化SQL(1)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:limeinan 来源:赛迪网 2007年8月24日

关键字: SQL Server SQL Server 2000 优化 数据库

  • 评论
  • 分享微博
  • 分享邮件

假定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
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章