MySQL COUNT(*)、COUNT(1)、COUNT(列) 有什么区别?
COUNT(*) :统计行数(含 NULL),InnoDB 下逐行计数(无专门计数器),与 COUNT(1) 等价(都按行数算,不取值);COUNT(1):同样统计行数,效果等同 COUNT(*);COUNT(列):只统计该列非 NULL 的行数(NULL 不计)。性能:三者优化器基本等价(都扫描最小索引),COUNT(列) 若有覆盖索引可能更快;大表 COUNT(*) 仍慢(全表/全索引扫描),优化:计数器表、EXPLAIN 用估算、分页接口避免精确 COUNT。判断是否全 NULL 用 COUNT(*) = COUNT(列)。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。