嗯,这应该足以获得当前数据库中所有记录的数量:
SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE();
令人惊讶的是,每次执行上述声明时,我都会得到不同的数字!首先我认为我的数据库存在问题。但是MySQL开发人员提供的示例数据库也是如此。
多次在sakila
执行上述语句会产生以下值:
46362
48104
45170
47060
48139
我做错了什么?这是一个错误吗?
答案 0 :(得分:6)
这是一个InnoDB的东西 - 你可以改为在桌面上计数(id),但它很慢。
因为它很慢,InnoDB会随机抽取行数,测量大小,然后除以总大小以确定大约有多少行。