结论: count(*)>count(1)>count(主键id)>count(字段)
原因: count(*)单独做过优化,只扫描普通索引树,并且不会取值,按行累加 count(1)遍历表放一个数字“1”进去,判断是不可能为空的,按行累加 count(主键id)遍历表,解析数据把id值取出来,按行累加 count(字段)遍历表,解析数据,判断是否为null,按行累加,如果不是索引的更慢
引擎差异: innodb表引擎的都要遍历表,因为存在事务下的mvcc机制的原因 myisam引擎的count(*)直接存储了值,不需要遍历直接取值所以最快