科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

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

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

既然选择正确的驱动表这么重要,那么让我们来看一下执行计划,到底各个表之间是如何关联的,从而得到执行计划中哪个表应该为驱动表:

在执行计划中,需要知道哪个操作是先执行的,哪个操作是后执行的,这对于判断哪个表为驱动表有用处。判断之前,如果对表的访问是通过rowid,且该rowid的值是从索引扫描中得来得,则将该索引扫描先从执行计划中暂时去掉。然后在执行计划剩下的部分中,判断执行顺序的指导原则就是:最右、最上的操作先执行。具体解释如下:

得到去除妨碍判断的索引扫描后的执行计划:

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'
   7    1 SORT (JOIN)
   8    7 TABLE ACCESS (FULL) OF 'C'
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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