斯蒂芬大帝
一般来说,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