2013-02-10 43 views
3

好记录的数量,这应该是足以让在当前数据库中的所有记录数:的MySQL数据库

SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = DATABASE(); 

出人意料的是,我得到我的每个执行上述语句时不同的数字!首先,我认为我的数据库存在问题。但是对于MySQL开发人员提供的示例数据库也是一样的。

执行上面的语句在sakila多次导致该值:

46362 
48104 
45170 
47060 
48139 

我做错了吗?这是一个错误?

回答

6

这是一个InnoDB的东西 - 你可以在桌子上计数(id),但它很慢。

因为速度很慢,所以InnoDB会随机抽样行,测量尺寸,然后划分总尺寸以确定大概有多少行。

+0

我一直在想这是为什么。 Thx的解释。 – 2013-02-10 15:56:03

+0

你能告诉我一个示例查询以确切计数吗? – 2013-02-10 16:02:26