扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:csdn 来源:csdn 2009年12月18日
关键字: MS-SQL Server 问答
count(0)和count(*)哪个效率高?
数据库使用的是SQL 2005,数据库表中有40多万条数据,第一项是GUID,字段有10几个,用count(0)和count(*)哪个效率会高一点呀?如果有1000万条记录呢?
(1)count(0)和count(*)不一样,前者会忽略null
(2)一般都用COUNT(1),感觉count(1)比count(*)会快些
SQL code
declare @a table(id int,value1 int)
insert @a
select 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 d
5 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 生成一个错误。这时应使用 COUNT_BIG。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者