count(列名)与count(*)、count(1)的区别

count()函数的作用是用来计算指定列或整个表中的函数,count()函数有以下三种写法:count(列名) 、count(1)、count(*) 。
其中,count(列名)只统计当前列中非空值的数量,如果值为null则不会被统计,但是仍然会消耗时间和内存,因为需要扫描表中的每一行记录。
count(1)会统计所有行数,不管是否有 null值,因为指定的是数字 1,所以不需要去扫描表中的列,仅仅是在内存中计数,因此比 count(列名) 更快。
count(星号) 也是统计所有行数,不管是否有 null值,和 count(1) 类似,但是 count(星号)会检查表中的每一行记录,即使行的值都是 NULL,也会被统计。
虽然和count(1) 在大多数情况下的执行时间是相同的,但是在某些数据库系统中,count(星号) 的执行时间可能更快一些,因为 星号被看作是一种特殊的优化符号,表示要计算所有列的值,包括索引列,因此查询引擎可以直接遍历所有的行数,而不需要额外的操作。此外,有些数据库系统还会对 count(星号) 进行优化,比如说在计算聚合结果时使用特殊的算法或者结构,从而达到更快的执行效果。
因此,对于 count函数,如果要统计整个表的行数,通常建议使用count(1) 或者 count(星号),因为它们都比 count(列名) 更快一些,而且可以保证结果的正确性。如果要统计某个特定的列中非空值的数量,可以使用 count(列名)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值