简单总结
详见https://dev.mysql.com/doc/refman/5.7/en/aggregate-functions.html#function_count
InnoDB
count()和count(1)没区别
5.7.18前count()选择聚簇索引)进行count
5.7.18后count()选择最小的二级索引(如果没有,那么选择聚簇索引)进行count(除非有索引或者优化提示)
当索引记录不在buffer pool中时count()需要一定的时间
如果需要的只是一个近似值,可以使用SHOW TABLE STATUS
MyISAM
存储了准确的行数,count(*)读取非常快
count(1)只有在第一列定义为not null时候才符合同样的优化