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

Mah*_*esh 2 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 9

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

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


Guf*_*ffa 8

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

所有其他将计算记录的数量.

(具有文字数字的那些*将代替将计算该值不为空的所有记录.可能查询规划器将认识到任何记录的文字值永远不会为空,并且执行相同count(*)而不是实际计数非空值.)