SQL Server 2008中选择计数(*),计数(0),计数(100),计数(Id)之间的差异?

时间:2012-11-30 08:48:04

标签: sql sql-server-2008

以下SQL Server 2008语句之间有什么区别?

SELECT COUNT(*) FROM dbo.Regular_Report

SELECT COUNT(0) FROM dbo.Regular_Report

SELECT COUNT(1) FROM dbo.Regular_Report

SELECT COUNT(100) FROM dbo.Regular_Report

SELECT COUNT(ID) FROM dbo.Regular_Report

2 个答案:

答案 0 :(得分:9)

前四个都是相同的 - 它们计算总行数。

最后一个计算ID不为空的行数。

答案 1 :(得分:8)

count(id)将计算id字段中的非空值。

所有其他人都会计算记录数。

(带有字面数而不是*的那些将计算该值不为空的所有记录。可能查询规划器将识别出任何记录的字面值永远不会为null,并且执行相同的操作如count(*)而不是实际计算非空值。)