count(*)、count(1)、count(0)、count(列名)到底写哪个?

结论:

       如果表没有主键,count(1)比count(*)快

       表有主键,count(*)会自动优化到主键列上。

  如果表只有一个字段,count(*)最快。

1、不建议写count(列名),会忽略字段为null的记录

2、count(0)、count(1)可以想象成在表中有一个字段,这个字段的值全是0或1;

        count(值),如果这个值不是null计1,如果这个值是null计0

3、count(*)执行时会把*翻译成字段的具体名字,效果同count(0)、count(1)一样,只不过多了个翻译的过程,效率相对会低一点

4、如果列为主键,count(列名)效率优于count(1),如果列不为主键,count(1)效率优于count(列名),因此表中存在主键,count(主键列名)效率最优

5、count(1)跟count(主键)一样,只扫描主键。count(*)跟count(非主键)一样,扫描整个表。明显前者更快一些。

6、count(1)和count(*)基本没有差别,但在优化的时候尽量使用count(1)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值