Mar*_*ian 44
来自 MSDN,在Advanced Query Tuning Concepts的主题中:
SQL Server 使用三种类型的连接操作:
嵌套循环连接
合并连接
哈希连接
如果一个连接输入很小(少于 10 行)而另一个连接输入相当大并且在其连接列上建立索引,则索引嵌套循环连接是最快的连接操作,因为它们需要最少的 I/O 和最少的比较。有关嵌套循环的更多信息,请参阅了解嵌套循环联接。
如果两个连接输入不小但在它们的连接列上排序(例如,如果它们是通过扫描排序索引获得的),则合并连接是最快的连接操作。如果两个连接输入都很大并且两个输入的大小相似,则使用先验排序的合并连接和散列连接提供相似的性能。但是,如果两个输入大小彼此显着不同,则散列连接操作通常要快得多。有关更多信息,请参阅了解合并联接。
散列连接可以有效地处理大型、未排序、未索引的输入。
但我相信您应该从一个更基本的主题开始:查询调优,最后使用查询提示。
这篇文章解释得很好:https ://www.linkedin.com/pulse/loop-hash-merge-join-types-eitan-blumin
(假设N和M是正在连接的两个表中的行数)。
嵌套循环连接
合并连接
哈希连接