首先,单表 5000 万并不需要分表,极端一点的情况就是考虑下表分区。 其次,不要在 5.7 版本以前的 MySQL 中执行 count,无解,带条件尤甚。 5.7 的 InnoDB 提供了 records 接口统计,https://dev.mysql.com/worklog/task/?id=6742 以及官方提及的“ The next worklog, WL#6605, is intended to return the COUNT(*) through this handler::records() interface almost immediately in all conditions just by keeping track if the base committed count along with transaction deltas ”