COUNT总结

    计数函数有几种写法,count(1),count(字段),count(*),他们的区别如下:

    COUNT(expr) ,返回SELECT语句检索的行中expr的值不为NULL的数量。COUNT(*) 的统计结果中,会包含值为NULL的行数。基于这个条件,count(1),count(*)里面都有明确的值,将返回所有符合查询条件的数据;count(字段)会在查询条件的基础上过滤字段为NULL的数据。

    初次看到这样的解释还是比较迷惑,简单理解可以把COUNT里面的值当做一个查询条件,当为1或者*的时候相当于where 1=1,当为某个字段的时候相当于增加了一个条件where 字段 is not null。

    count(*)为标准的sql语法,在这个语句上专门做了优化,如果没有查询条件的情况下,count(*)会直接从元数据表中读取记录的数据行数,这是最快的。如果有查询条件执行器会选择最优的路径的执行,例如索引优先,非聚集索引优先等。

    count(1)和count(*)在各个方面没有差别,是一样的执行方式;count(字段)会执行全表扫描并且增加字段非空条件;推荐使用count(*),因为是标准语法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值