count(0)和count(*)哪个效率高?

2026-05-18 16:21:55
推荐回答(1个)
回答1:

(1)count(0)和count(*)不一样,前者会忽略null (2)一般都用COUNT(1),感觉count(1)比count(*)会快些 SQL code declare @a table(id int,value1 int)insert @aselect 1,1 union all select null,null union all select 3,null union all select 5,5 union all select 7,7 select count(0) as a,count(1) as b,count(*) as c, count(value1) as d from @a/*-------------------------a b c d5 5 5 3---------------------------*/ COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } ) 参数ALL对所有的值进行聚合函数运算。ALL 是默认值。 DISTINCT 指定COUNT 返回唯一非空值的数量。 expression 除text、image 或 ntext 以外任何类型的表达式。不允许使用聚合函数和子查询。 * 指定应该计算所有行以返回表中行的总数。COUNT(*) 不需要任何参数,而且不能与 DISTINCT 一起使用。COUNT(*) 不需要 expression 参数,因为根据定义,该函数不使用有关任何特定列的信息。COUNT(*) 返回指定表中行数而不删除副本。它对各行分别计数。包括包含空值的行。 返回类型int 备注COUNT(*) 返回组中的项数。包括 NULL 值和重复项。 COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。 COUNT(DISTINCT expression) 对组中的每一行都计算 expression 并返回唯一非空值的数量。 对于大于 2^31-1 的返回值,COUNT 生成一个错误。