在某些情况下,使用JOIN或IN将为我提供正确的结果…哪一种通常具有更好的性能,为什么?它在多大程度上取决于您正在运行的数据库服务器?(仅供参考,我正在使用MSSQL)
一般来说,IN和JOIN是可以产生不同结果的不同查询。
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是唯一的。
b.col
但是,这是第一个查询的同义词:
SELECT a.* FROM a JOIN ( SELECT DISTINCT col FROM b ) ON b.col = a.col
如果联接列被UNIQUE标记为,则这两个查询将在中产生相同的计划SQL Server。
UNIQUE
SQL Server
如果不是,则IN比JOINon快DISTINCT。
DISTINCT
有关性能的详细信息,请参见我的博客中的这篇文章:
EXISTS