count(1)和count(*)的区别

count(1)和count(*)的区别,对这个问题有疑问的网友可以看看
      count(1),其实就是计算一共有多少符合条件的行。1并不是表示第一个字段,而是表示一个固定值。我们可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.。同理,count(2)、count(3),得到的值完全一样,count('x'),count('y')都是可以的。一样的理解方式。在你这个语句理都可以使用,返回的值完全是一样的。就是计数。
      count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。

     如果你的数据表没有主键,那么count(1)比count(*)快
      如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快
      如果你的表只有一个字段的话那count(*)就是最快的,不过两者的差别不大

count(1)和count(*):

都为统计所有记录数,包括null

执行效率上:当数据量1W+时count(*)用时较少,1w以内count(1)用时较少

count(字段):

统计字段列的行数,不包括null

若字段为主键则count(主键)效率最高,否则少量数据时使用count(1)

 

总结:少量数据不忽略null选count(1),大量数据选count(*),忽略null选count(字段)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值