【数据库】count(*),count(1)和count(列)

   最近写了一些SQL,在用count进行统计的时候,我一般都习惯用count(*),看同事的代码有事会用count(1),那么count(*),count(1)和count(某一列)有什么区别呢?

   首先从查询结果来看:

count(*)和count(1)统计的是整张表的所有行。

count(列):如果统计的列不允许为null,则统计的也是所有行,当这一列有null值时,count将忽略null的行。

        接着从查询效率上来看:

        网上说法不一,后来请教了公司的DBA,DBA是这么说的:这个具体得看表,结果一样 数据量不大的话,没什么区别,如果数据量大并有主键,count(1)会好一点。

        于是在自己的数据库里进行测试:

1.4000+数据,查询时间一样,都是0.003 sec

2.14W+数据,count(1): 0.078 sec

                        count(*): 0.059 sec

                        count(id): 0.067 sec

         从结果上来看,是count(*)比较快。(查询结果是在id是主键,并且是索引的前提下产生的)

         以上是我对他们三个的一点点认识,感觉还不是很全面,大家还有什么看法,欢迎讨论。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值