count(0) count(1) count(索引字段) count(非索引字段)(修正)

本文通过实验对比了MySQL中count(0)、count(1)、count(*)以及count(索引字段)、count(非索引字段)的性能。在拥有100多万行数据的表中,发现count(唯一索引字段)=count(0)=count(1)=count(*)>count(没有索引字段)。虽然count(0)、count(1)和count(*)的执行计划相似,但count(*)经过优化,直接进行行累加,效率较高。建议在统计查询时使用count(*)。
摘要由CSDN通过智能技术生成

在自己电脑上没有很大的数据量所以在公司的测试环境进行了测试验证,不便截图

我在一个有100多万的表中执行了

select count(0)

select count(1)

select count(*)

select count(唯一索引字段)

select count(没有索引字段)

 

经过执行计划比较性能:

  count(唯一索引字段)=count(0)= count(1)= count(*)>count(没有索引字段)

count(0)和count(1)和count(*)的执行计划一样,都会走索引扫描,查询的时间接近,比较少的查询次数得出的结果差异无法对性能进行评价,执行计划判断性能是比较好的标准。

 

count(0)将返回表格中所有存在的行的总数包括值为null的行

count(1)会统计包括null值的所有符合条件的字段的条数。

count(0)count(1) count(*) 都会返回null的行

count(字段)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入)

2020年11月11日 对前文中的错误进行一定的修订

之前写的 count(唯一索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值