查询以计算所有表中的确切记录数

时间:2010-10-07 13:17:05

标签: sql mysql sql-view

IHello,

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

我的所有表都恰好位于InnoDB和此查询

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

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

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

3 个答案:

答案 0 :(得分:1)

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

select Count(*) from MyTable

答案 1 :(得分:0)

如果您打算使用系统视图,那么您需要确保更新数据库statisc或在系统架构视图(例如information_schema.x)中行数可能不正确。

使用

select count(*) yourtable; 

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

Analyze table yourtable; 

更新statisitcs然后检查系统视图中的计数,它们应该在行数的位置匹配。

请访问此网站了解更多详细信息以及为整个数据库执行此操作的方法:

MySQL reference manual

答案 2 :(得分:0)

发布于此Answer

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