科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道count(0)和count(*)哪个效率高?

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者: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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章