【问题标题】:How index helps for join in SQL Server [closed]索引如何帮助加入 SQL Server [关闭]
【发布时间】:2015-01-19 08:33:28
【问题描述】:

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

我通过 VIDEO.. 了解 where 子句的工作原理。

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

【问题讨论】:

  • 你听说过谷歌吗?不知道为什么人们跑到堆栈溢出。我不知道怎么穿裤子。有人可以帮助我吗? MSSQL 有一个完整的 MSDN 站点可以帮助您解决这个问题。
  • @Jaques:在 MSDN 中找到 relevant 文章绝非易事,新手必须有千里眼才能找到正确的 google 搜索才能找到相关的文章。将他指向正确的文章比让他自己搜索要好得多。
  • 还有-咳-书。在这种情况下,SQL for Dummies。但是,嘿,今天的孩子们不想使用他们的大脑。只要给我准备好的所有知识,我就不必思考了。态度很好。

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


【解决方案1】:

有三种方法可以进行连接:

  1. 嵌套循环

在嵌套循环中,连接的一侧被扫描,另一侧被探测(键被搜索)。如果有一个指数可以利用,调查可以得到巨大的推动。见Understanding Nested Loops Joins

  1. 哈希连接

哈希扫描连接的一侧,在内存中构建一个hash table,然后扫描另一侧并匹配哈希表中的键。没有索引有利于散列连接。见Understanding Hash Joins

  1. 合并加入

Merge join 需要两边都进行排序。它们通过同时迭代双方来工作,并依靠排序顺序保证来决定键是否匹配,而无需向前看或保持状态。为了提供排序保证,可以利用索引。见Understanding Merge Joins

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-06
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      相关资源
      最近更新 更多