sql – INNER JOIN可以提供比EXISTS更好的性能

我一直在调查在一系列程序上的性能改进,最近一位同事提到,他在使用INNER JOIN代替EXISTS时取得了显着的性能改进。

作为调查的一部分,为什么这可能是我想我会问这里的问题。

所以:

> INNER JOIN能否提供比EXISTS更好的性能?
>这会发生什么情况?
>我如何设置一个测试用例作为证明?
>你有任何有用的链接到更多的文档吗?

真的,任何其他经验,人们可以带来这个问题。

我希望如果任何答案可以解决这个问题,没有任何建议其他可能的性能改进。我们已经有了一定程度的成功,我只是对这一个项目感兴趣。

任何帮助将不胜感激。

一般来说,INNER JOIN和EXISTS是不同的东西。

前者从两个表返回重复和列,后者返回一个记录,并且作为谓词,仅返回来自一个表的记录。

如果在UNIQUE列上执行内部联接,则它们显示相同的性能。

如果你在应用了DISTINCT的记录集上做了一个内联接(为了摆脱重复),EXISTS通常更快。

IN和EXISTS子句(具有等值相关性)通常使用几个SEMI JOIN算法中的一个,它们通常比其中一个表上的DISTINCT更有效。

在我的博客中看到这篇文章:

> IN vs. JOIN vs. EXISTS

http://stackoverflow.com/questions/2177346/can-an-inner-join-offer-better-performance-than-exists

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql – INNER JOIN可以提供比EXISTS更好的性能