小编典典

SQL JOIN vs IN性能?

sql

在某些情况下,使用JOIN或IN将为我提供正确的结果…哪一种通常具有更好的性能,为什么?它在多大程度上取决于您正在运行的数据库服务器?(仅供参考,我正在使用MSSQL)


阅读 278

收藏
2021-05-05

共1个答案

小编典典

一般来说,INJOIN是可以产生不同结果的不同查询。

SELECT  a.*
FROM    a
JOIN    b
ON      a.col = b.col

与…不同

SELECT  a.*
FROM    a
WHERE   col IN
        (
        SELECT  col
        FROM    b
        )

,除非b.col是唯一的。

但是,这是第一个查询的同义词:

SELECT  a.*
FROM    a
JOIN    (
        SELECT  DISTINCT col
        FROM    b
        )
ON      b.col = a.col

如果联接列被UNIQUE标记为,则这两个查询将在中产生相同的计划SQL Server

如果不是,则INJOINon快DISTINCT

有关性能的详细信息,请参见我的博客中的这篇文章:

2021-05-05