索引如何帮助加入SQL Server

时间:2014-11-21 08:44:37

标签: sql sql-server join indexing sql-server-2012

我是SQL Server的新手。我不清楚索引如何帮助加入SQL Server。当我们连接两个表时,索引是如何发生的,它以何种方式执行查询?是否有任何链接可以阅读以理解这一点?

通过这个VIDEO ..

,我理解了where子句的工作原理

是否有任何其他视频或文章链接可以了解加入与索引

2 个答案:

答案 0 :(得分:3)

有三种方法可以进行加入:

  1. 嵌套循环
  2. 使用嵌套循环扫描连接的一侧,探测另一侧(搜索关键字)。如果有一个杠杆指数,探针可以获得巨大的推动。见Understanding Nested Loops Joins

    1. 哈希加入
    2. 哈希扫描连接的一端,在内存中构建hash table,扫描另一端并匹配哈希表中的键。没有索引有益于散列连接。请参阅Understanding Hash Joins

      1. 合并加入
      2. 合并连接需要对两边进行排序。它们通过同时迭代双方并依靠排序顺序保证来确定密钥是否匹配,无需向前看或保持状态。为了提供排序保证,可以利用索引。请参阅Understanding Merge Joins

        我建议您阅读Understanding how SQL Server executes a queryHow to analyse SQL Server performance。通常,您应该以在连接之前进行过滤的方式设计数据模型和查询。如果你需要加入大数据集索引可能有所帮助,但战斗已经失败。

答案 1 :(得分:0)

在寻找视频之前,您必须阅读至少一本书!

使用索引,服务器可以比扫描所有记录更快地找到相应的行(如果表有很多行,结果很少)。例如,如果表有10,000,000行,并且查询必须返回20行 - 使用索引,服务器可以读取平均~20 MB的数据(10M * 32位索引的50%)而不是1500 MB(50%例如10M行) * 300字节)。