Nested Loop Join 在工作\伪代码方面与 Inner Join 有何不同,以及建议使用 Nested Loop Join 而不是 Inner Join 的要点。
问问题
4724 次
1 回答
5
它不是“代替”——一个逻辑 INNER JOIN
可以以多种物理方式处理——嵌套循环、哈希匹配或合并。还有第四种类型,adaptive join,但这是一种欺骗……它实际上只是推迟在嵌套循环和哈希匹配之间进行选择。
当连接的一侧相对较小时,通常会选择嵌套循环连接。考虑将Customers
表连接到Orders
表 - 理想情况下,客户将下达大量订单,因此嵌套循环连接的工作方式(概念上),如果不平衡足够高,是从第一个客户开始,收集他们的订单,然后转移到下一个客户,收集他们的订单等。实际上,优化器将在计划编译时决定哪种物理操作最有意义,并且它会根据各种因素做出决定,例如两张表的基数、统计信息、硬件资源等。
(我将简要说明合并连接的工作方式类似于拉链,而哈希连接的工作方式类似于一组存储桶。但您可以在其他地方阅读这些内容以获取更多详细信息。)
下一次,请搜索这些概念,当您在实现它们时遇到实际问题或了解为什么在特定情况下选择特定连接方法时,请来寻求编程帮助。这不是图书馆。:-)
于 2013-04-04T13:23:25.853 回答