1

你好,

我正在尝试为我的 MySQL 数据库中的每个表计算其中有多少条记录。

我所有的表都在 InnoDB 和这个查询中

SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'myschema';

估计太多了(有+846条记录,它告诉我只有+-400条)

有没有办法用类似的查询来计算更准确的行数?查询运行多长时间并不重要。(PS 不使用 php 或类似语言)

4

3 回答 3

1

如果查询的长度无关紧要,那么如何为数据库中的每个表执行以下操作:

select Count(*) from MyTable
于 2010-10-07T13:26:08.910 回答
0

如本答案中所述

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
于 2012-10-18T14:34:58.377 回答
0

如果您要使用系统视图,那么您需要确保您的数据库统计信息已更新,否则系统模式视图(例如 information_schema.x)中的行数可能不正确。

使用

select count(*) yourtable; 

如上面的答案所述,以获得确切的数字

Analyze table yourtable; 

要更新统计信息,然后检查系统视图中的计数,它们应该在该点匹配行数。

有关更多详细信息以及为整个数据库执行此操作的方法,请参阅此网站:

MySQL 参考手册

于 2011-10-27T19:35:42.027 回答