mysql系统表中查出的TABLE_ROWS不准确

Andy 2021年10月28日 1,399次浏览

说说我自己的操作方式:SELECT *FROM INFORMATION_SCHEMA.tables

WHERE table_schema= 'cachedb'
AND table_rows>0;

想用这个语句查出cachedb中所有的有数据的表的表名,但是发现有些表里面明明有数据,但是table_rows显示的是0,

上网查了资料,发现对于InnoDB表,table_rows行计数仅是大概估计值(http://www.netingcn.com/mysql-view-all-table-row.html),

想了很多其他方法都没有解决,后来我们老大给了一个方案。。瞬间被秒杀

对于这些统计不正确的使用表分析 ANALYZE TABLE cachedb.表名;

再查此表的table_rows即正确。