3

好吧,这应该足以获取当前数据库中所有记录的数量:

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

令人惊讶的是,每次执行上述语句时,我都会得到不同的数字!首先我认为我的数据库有问题。但是对于 MySQL 开发人员提供的 sample db 也是一样的。

sakila多次执行上述语句会产生以下值:

46362
48104
45170
47060
48139

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

4

1 回答 1

6

这是 InnoDB 的事情——您可以改为在 table 上使用 count(id),但它很慢。

因为它很慢,InnoDB 随机抽取行样本,测量大小,然后除以总大小以确定大约有多少行。

于 2013-02-10T15:55:22.373 回答