count(*)、count(1)、count(字段) 的区别
题目
count(*)、count(1)、count(字段)有什么区别?
参考答案
count(*):统计总行数count(1):和count(*)很接近count(字段):忽略字段为 null 的行
在 InnoDB 中,性能差异通常不是重点,关键还是看执行计划和是否走索引。
回答展开
- SQL 和索引题的关键是解释为什么快、为什么慢,而不是只背优化口诀。
- 回答时最好结合执行计划、扫描行数、回表次数和写入成本。
- 真正有经验的回答通常会强调以执行计划和真实数据分布为准。
实际场景
比如后台订单列表查询慢,通常要先看执行计划,再判断是不是没走索引、回表太多或深分页导致扫描成本过高。