小编典典

SQL JOIN 与 IN 性能?

all

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


阅读 62

收藏
2022-06-28

共1个答案

小编典典

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

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

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

2022-06-28