我对 MySQL 中的行数感到困惑。phpMyAdmin 和 count 查询返回的总行数不同。
我的表结构是InnoDB.
Showing rows 0 - 24 (655537 total, Query took 0.1527 seconds.)
Run Code Online (Sandbox Code Playgroud)
这是浏览表格时的结果。
我的计数查询是
SELECT count(*) FROM `table_name`
Run Code Online (Sandbox Code Playgroud)
这将返回为602030
当您使用 phpmyadmin 或 heidiSQL 等工具浏览时,会执行如下查询:
SHOW TABLE STATUS LIKE 'table';
Run Code Online (Sandbox Code Playgroud)
该值不准确,如果运行多次,总会给出不同的结果。
相反,查询:
select count(*) from table
Run Code Online (Sandbox Code Playgroud)
实际上是对记录进行计数,并给出正确的结果。
正如 mysql 文档https://dev.mysql.com/doc/refman/8.0/en/show-table-status.html中提到的:
某些存储引擎(例如 MyISAM)存储精确的计数。对于其他存储引擎,例如 InnoDB,该值是一个近似值,可能与实际值相差 40% 到 50%。在这种情况下,请使用 SELECT COUNT(*) 来获取准确的计数。
| 归档时间: |
|
| 查看次数: |
2147 次 |
| 最近记录: |