2010-10-07 76 views
1

IHello中,查询来计算记录的确切数目的所有表

我想计数的每个表在我的MySQL数据库多少记录有它。

我所有的表恰巧在InnoDB和此查询

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

办法太多太多的估计(有846个记录,它告诉我,只有+ - 400)

有没有一种方法可以计算更多的确切数字与行相似的查询?无论查询需要多长时间,这都无关紧要。 (PS不使用PHP或类似的语言)

回答

1

如果查询的长度不那么无论什么这样做的每个表下面在数据库:

select Count(*) from MyTable 
0

如果你打算使用系统视图,那么您需要确保更新数据库统计信息,或者在系统模式视图(如information_schema.x)中行的计数可能不正确。

使用

select count(*) yourtable; 

如回答说上面得到确切的数字

Analyze table yourtable; 

更新statisitcs然后检查计数系统视图下,他们应该匹配在部份点行数。

看到这个网站了解更多的细节和方式,为您的整个数据库做到这一点:

MySQL reference manual

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 
相关问题