SQL JOIN vs IN性能?我有一个案例,使用JOIN或IN将给我正确的结果......通常有更好的性能,为什么?它取决于您运行的数据库服务器多少钱?(仅供参考我使用的是MSSQL)
3 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
一般来说,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
。
有关性能详情,请参阅我的博客中的这篇文章
慕的地8271018
TA贡献1796条经验 获得超4个赞
动漫人物
TA贡献1815条经验 获得超10个赞
关于逻辑差异的一个有趣的写法:SQL Server:JOIN vs IN vs EXISTS - 逻辑差异
我很确定假设关系和索引被维护,Join将整体表现更好(更多的努力用于处理该操作然后其他操作)。如果从概念上考虑它,那么它是2个查询和1个查询之间的区别。
您需要将其连接到查询分析器并尝试它并查看差异。另请查看查询执行计划并尝试最小化步骤。
添加回答
举报
0/150
提交
取消