你好,
我正在尝试为我的 MySQL 数据库中的每个表计算其中有多少条记录。
我所有的表都在 InnoDB 和这个查询中
SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'myschema';
估计太多了(有+846条记录,它告诉我只有+-400条)
有没有办法用类似的查询来计算更准确的行数?查询运行多长时间并不重要。(PS 不使用 php 或类似语言)
如果查询的长度无关紧要,那么如何为数据库中的每个表执行以下操作:
select Count(*) from MyTable
如本答案中所述
create table #rowcount (tablename varchar(128), rowcnt int)
exec sp_MSforeachtable
'insert into #rowcount select ''?'', count(*) from ?'
select * from #rowcount
order by tablename
drop table #rowcount
如果您要使用系统视图,那么您需要确保您的数据库统计信息已更新,否则系统模式视图(例如 information_schema.x)中的行数可能不正确。
使用
select count(*) yourtable;
如上面的答案所述,以获得确切的数字
Analyze table yourtable;
要更新统计信息,然后检查系统视图中的计数,它们应该在该点匹配行数。
有关更多详细信息以及为整个数据库执行此操作的方法,请参阅此网站: