我有两种不同形式的SQL条件。
使用EXISTS:
exists (select 1 from [table] where [conditions])
使用聚合功能:
(select max(1) from [table] where [conditions]) is not null
两个陈述中的[table]和[conditions]相等。 这两个条款是否有可能返回不同的结果? 如果没有,哪一个有更好的查询性能? 如果重要,那么有问题的数据库是IBM DB2 UDB v10。
答案 0 :(得分:1)
我没有DB2来测试它。但我认为这取决于。以下声明:
select max(1)
from (select 1 as i)t
where i = 2
在SQL Server(null
)和MySQL(1)上产生不同的结果。如果DB2返回1
,那么语句就不同了。不过,我希望它会返回null
。
如果返回null
,则两个语句的效果相同。但是,max()
语句的效果可能不如exists
。 exists
语句可以在第一个匹配值处停止。