什么时候应该使用 INNER -LOOP- JOIN 而不是 INNER JOIN
今天我了解了 SQL Server 中的一个名为 的东西内循环连接
。
这意味着什么? (谷歌没有帮助……或者我应该说……有关它的博客文章有点……技术性,让我大吃一惊)。
另外,在哪些常见场景中,最好使用 INNER LOOP JOIN 而不是标准的 INNER JOIN?
Today I learned about a thing in SQL Server called INNER LOOP JOIN
.
What does this mean? (Google is not helping .. or should I say ... the blog posts about it are a bit .. technical and are blowing my mind).
Also, what are some common scenarios that would be a good idea to use an INNER LOOP JOIN
over a standard INNER JOIN
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
循环|哈希 | MERGE 是连接提示,指定查询中的连接应使用循环、散列或合并。使用循环|散列| MERGE JOIN 在两个表之间强制执行特定的联接。 LOOP 不能与 RIGHT 或 FULL 一起指定为连接类型。
您应该始终使用 INNER JOIN。让查询优化器决定是否要执行 LOOP、MERGE 或 HASH 连接。几乎在所有情况下优化器都会做出更好的判断。将使用哪一个以及何时使用可以从我的演示文稿中找到 http://sqlbits.com/Sessions/Event4 /Understanding_Graphical_Execution_Plans。
(编辑:该页面上视频演示的链接已损坏,但 Archive.org 已将其存档此处)
LOOP | HASH | MERGE are Join hints, specifying that the join in the query should use looping, hashing, or merging. Using LOOP |HASH | MERGE JOIN enforces a particular join between two tables. LOOP cannot be specified together with RIGHT or FULL as a join type.
You should always use INNER JOIN. Let the query optimizer decide whether it wants to do a LOOP, MERGE, or HASH join. In almost all cases the optimizer will make a better judgement. Which one will be used and when can be found from my presentation http://sqlbits.com/Sessions/Event4/Understanding_Graphical_Execution_Plans.
(Edit: The link to the video presentation on that page is broken, but Archive.org has archived it here)
您指的是加入提示。与其他提示一样,连接提示只能作为最后的手段来指定,因为大多数情况下 SQL Server 都会选择正确的算法。 这篇 是一篇很好的文章,可以解释其中的一些内容。
What you are referring to is a join hint. Like other hints, join hints should only be specified as a last resort as most of the time SQL server would pick correct algorithm. A good article to explain some of it is this.