【发布时间】:2014-12-15 05:05:35
【问题描述】:
两者中哪一个会更好(我最近被指责不小心我的代码,因为我在 Oracle 中使用了后者):
Select *
from Tab1
Where (not) exists(Select 1 From Tab2 Where Tab1.id = Tab2.id)
Select *
from Tab1
Where (not) exists(Select Field1 From Tab2 Where Tab1.id = Tab2.id)
还是两者都一样?
请从 SQL Server 和 Oracle 的角度回答。
我已经用谷歌搜索(主要来自 sql-server 端)并发现对此仍有很多争论,尽管我目前的观点/假设是 RDMBS 中的优化器已经足够成熟,可以理解所有需要子查询是一个布尔值。
【问题讨论】:
-
没有区别,都是一样的。检查两个查询的执行计划以进行验证。
标签: sql sql-server oracle exists