【发布时间】:2012-03-29 17:28:38
【问题描述】:
我应该避免 IN() 因为比 EXISTS() 慢吗?
SELECT * FROM TABLE1 t1 WHERE EXISTS (SELECT 1 FROM TABLE2 t2 WHERE t1.ID = t2.ID)
VS
SELECT * FROM TABLE1 t1 WHERE t1.ID IN(SELECT t2.ID FROM TABLE2 t2)
根据我的调查,我设置了 SHOWPLAN_ALL。我得到相同的执行计划和估算成本。使用索引(pk),在两个查询中查找。没有不同。
还有哪些其他情况或其他情况可以使两个查询的结果大不相同?优化器是否对我进行了优化以获得相同的执行计划?
【问题讨论】:
-
“还有哪些其他场景或其他情况会对这两个查询产生重大影响” - 执行计划取决于很多事情,所以你总是需要检查它
-
@DavidHall 谢谢你,我会看帖子的。
标签: sql sql-server sql-server-2008