count(*) MyISAM 表总行数存磁盘,直接返回这个值InnoDB,一行一行读再计数,因为其MVCC的性质 InnoDB 可重复读是其默认隔离级别:事务执行过程中看到的数据总是和事务启动的数据一样。 方案:自己计数 缓存系统保存计数:双系统,不是一致的分布式事务,会导致逻辑不一致的问题(先写或后写缓存)可用数据库存计数解决上述问题 不同count的用法 count(字段),只统计字段不是null的总个数。 count(*) 不管null,直接按行累加。 思考 先记录,再计数