sql – 存在/不存在:’select 1’vs’select field’
两者中哪一个表现更好(我最近被指责不小心我的代码,因为我在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透视图中回答这两个问题. 我用google搜索(主要来自sql-server方面)并发现对此仍有很多争论,尽管我现在的意见/假设是两个RDMBS中的优化者已经足够成熟,可以理解子查询所需要的只是一个布尔值. 解决方法是的,他们是一样的.存在检查子查询中是否至少有一行.如果是,则评估为true.子查询中的列无论如何都无关紧要.根据MSDN,存在:
和Oracle:
也许MySQL documentation更能解释:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |