我只是想知道你们中是否有人使用Count(1)
比Count(*)
,在性能上是否有明显的差异,或者这只是一个过go 遗留下来的习惯?
具体数据库是SQL Server 2005
.
我只是想知道你们中是否有人使用Count(1)
比Count(*)
,在性能上是否有明显的差异,或者这只是一个过go 遗留下来的习惯?
具体数据库是SQL Server 2005
.
没有区别.
原因:
Books on-line表示"
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
"
"1"是一个非空表达式:所以它与COUNT(*)
相同.
与EXISTS (SELECT * ...
或EXISTS (SELECT 1 ...
相同
例子:
SELECT COUNT(1) FROM dbo.tab800krows
SELECT COUNT(1),FKID FROM dbo.tab800krows GROUP BY FKID
SELECT COUNT(*) FROM dbo.tab800krows
SELECT COUNT(*),FKID FROM dbo.tab800krows GROUP BY FKID
同样的任务,同样的计划,同样的工作
编辑,2011年8月
编辑,2011年12月
COUNT(*)
在ANSI-92中特别提到(请看"Scalar expressions 125
")
case :
a) 如果指定了COUNT(*),则结果是T的基数.
也就是说,美国国家标准协会(ANSI)标准认为这是显而易见的.COUNT(1)
已经被RDBMS供应商优化了,这是一种迷信.否则将按照ANSI标准进行判断
b) 否则,将TX设为作为