猿问

SQL JOIN vs IN性能?

SQL JOIN vs IN性能?

我有一个案例,使用JOIN或IN将给我正确的结果......通常有更好的性能,为什么?它取决于您运行的数据库服务器多少钱?(仅供参考我使用的是MSSQL)



开心每一天1111
浏览 1068回答 3
3回答

斯蒂芬大帝

一般来说,IN和JOIN不同的查询,可以产生不同的结果。SELECT  a.*FROM    aJOIN    bON      a.col = b.col是不一样的SELECT  a.*FROM    aWHERE   col IN         (         SELECT  col        FROM    b        ),除非b.col是独一无二的。但是,这是第一个查询的同义词:SELECT  a.*FROM    aJOIN    (         SELECT  DISTINCT col        FROM    b        )ON      b.col = a.col如果加入列是UNIQUE并标记为这样,则这两个查询都会生成相同的计划SQL Server。如果不是,那么IN比JOIN开快DISTINCT。有关性能详情,请参阅我的博客中的这篇文章INvs. JOINvs.EXISTS

慕的地8271018

有趣的是你提到了,我在这个主题上写了一篇博文。请参阅Oracle vs MySQL与SQL Server:聚合与联接简短的回答:你必须测试它,个人数据库变化很大。

动漫人物

关于逻辑差异的一个有趣的写法:SQL Server:JOIN vs IN vs EXISTS - 逻辑差异我很确定假设关系和索引被维护,Join将整体表现更好(更多的努力用于处理该操作然后其他操作)。如果从概念上考虑它,那么它是2个查询和1个查询之间的区别。您需要将其连接到查询分析器并尝试它并查看差异。另请查看查询执行计划并尝试最小化步骤。
随时随地看视频慕课网APP
我要回答