INNER JOIN可以提供比EXISTS更好的性能
我一直在调查一系列程序的性能改进,最近有一位同事提到他在使用INNER JOIN代替EXISTS时取得了显着的性能提升。
作为调查的一部分,为什么这可能是我想我会问这里的问题。
所以:
- INNER JOIN可以提供比EXISTS更好的性能吗?
- 这会发生什么情况?
- 我怎样才能build立一个testing用例作为certificate?
- 你有进一步的文件有用的链接?
真的,任何其他的经验,人们可以带来这个问题。
如果有任何答案可以解决这个问题,而没有任何其他可能的性能改进的build议,我将不胜感激。 我们已经取得了一定程度的成功,而我只是对这个项目感兴趣。
任何帮助将非常感激。
一般来说, INNER JOIN
和EXISTS
是不同的东西。
前者返回两个表中的重复项和列,后者返回一个logging,作为谓词,只返回来自一个表的logging。
如果您在UNIQUE
列上进行内部UNIQUE
,它们会performance出相同的性能。
如果在应用DISTINCT
的logging集上执行内部DISTINCT
(以除去重复项), EXISTS
通常会更快。
IN
和EXISTS
子句(等同联系)通常使用几个SEMI JOIN
algorithm之一,这些algorithm通常比其中一个表上的DISTINCT
更高效。
在我的博客中看到这篇文章:
- IN与JOIN与EXISTS
也许,也许不是。
- 同样的计划将最有可能产生
- INNER JOIN可能需要DISTINCT才能获得相同的输出
- EXISTS处理NULL