【发布时间】:2023-04-04 12:59:01
【问题描述】:
我正在寻找对算法的高级理解,以便我能够大致了解 SQL-Server 执行联接的操作。随意简洁,我不是在寻找极其细节的东西。促使我了解如何更好地实现连接的是我刚刚发布的this question 背后的场景。我觉得它们最终是两个独立的问题,这就是我没有将它们结合起来的原因。
谢谢!
【问题讨论】:
标签: sql-server join
我正在寻找对算法的高级理解,以便我能够大致了解 SQL-Server 执行联接的操作。随意简洁,我不是在寻找极其细节的东西。促使我了解如何更好地实现连接的是我刚刚发布的this question 背后的场景。我觉得它们最终是两个独立的问题,这就是我没有将它们结合起来的原因。
谢谢!
【问题讨论】:
标签: sql-server join
编辑(2020-03-11):这个 9 岁以上的答案中的链接今天都无效。我会删除答案,但 SO 不会让我这样做,因为它在实际有用时被接受了。
原答案:
这里有一些读物可以帮助您入门。
【讨论】:
老实说,如果您对这种详细程度感兴趣,我建议您阅读 Microsoft SQL Server 2008 Internals.
并学习阅读执行计划。 SQL Server 有一个非常好的优化引擎。它并不总是按照我们人类所期望的方式做事,甚至对于在我们看来相似的两个查询的方式也不相同。
【讨论】:
SQL Server 可以从多种不同的连接中进行选择:最常见的连接是合并、循环和散列。看到这个KB article。
【讨论】: