- 定义
count(1):常见计数方式,统计目标表的记录行数。括号里表示一个固定值,可以是任何固定的数字字符,是个常量。
count(*):常见计数方式,统计目标表的记录行数,与count(1)执行结果相同,但是执行会根据目标表的不同进行优化。
count(列名):常见计数方式,统计目标表某一列的非空记录数。它会统计指定列中不为NULL的行数,忽略NULL值。
Count(distinct(列名)) :其实是 count(列名) + distinct 的结果集,指定列不为NULL,并且在字段值重复的情况下只统计一次
- 总结
如果在开发中确实需要用到count()聚合,那么优先考虑count(),因为mysql数据库本身对于count()做了特别的优化处理。
有主键或联合主键的情况下,count(*)略比count(1)快一些。
没有主键的情况下count(1)比count(*)快一些。
如果表只有一个字段,则count(*)是最快的。
使用count()聚合函数后,最好不要跟where age = 1;这样的条件,会导致不走索引,降低查询效率。除非该字段已经建立了索引。使用count()聚合函数后,若有where条件,且where条件的字段未建立索引,则查询不会走索引,直接扫描了全表。
count(字段),非主键字段,这样的使用方式最好不要出现。因为它不会走索引.
posted on
2025-04-02 14:31
mark_cr1990
阅读(
25)
评论()
收藏
举报