Navicat 显示的行数与实际表行数不一致

问题 #

Navicat 显示的行数与实际表行数不一致。

原因 #

MySQL information_schema.TABLES 表的 TABLE_ROWS 字段对不同存储引擎计数规则不同:MyISAM 精确计数,InnoDB 等其他引擎为近似值(相差 40%-50%)。

解决 #

使用 SELECT COUNT(*) 查询获取准确行数。

修正 <code>TABLE_ROWS</code> #

文章中提到可以使用 ANALYZE TABLE big_table_name 来尝试修正 TABLE_ROWS 字段的值,但是作者尝试后发现并不能更正数据,而且该操作还会耗时锁表,因此不建议使用。


「开发日志」Navicat统计的行数竟然和表实际行数不一致?!