起因是想查询一个没有数据行,且只有一列的结果集。
第一种:
select 0 as EmpId where 1<>1
第二种:
a)select a1 as EmpId from table1 where 1<>1
b)select top 0 a1 as EmpId from table1
低数据量应该区别不大,
但是如果table1有上千万条数据,第二种中b大概不受影响,a需检索千万行...
至于第一种,一般想来应该是最不耗资源的,但和第二种b相比可能几乎没啥区别。但是第一种会不会是先将“0 as EmpId”转为一行一列的表,然后检索“1<>1”?如果是先转表,那么就想差一个建表的时间了...
三者应该都是一样的,你选择包含实际查询计划,看执行计划具体怎么做得就可以了
1<>1这种条件,sql server本身就会做优化,不会去检索表
第一种语句本来就不对吧,1 <> 1这个条件是false,无论怎么样都查不出出来数据。