【问题标题】:Number of rows are different in MySQL show total and count query [duplicate]MySQL显示总数和计数查询中的行数不同[重复]
【发布时间】:2019-04-23 02:43:35
【问题描述】:

我对 MySQL 中的行数感到困惑。 phpMyAdmin 返回的总行数和计数查询不同。

我的表结构是InnoDB

Showing rows 0 - 24 (655537 total, Query took 0.1527 seconds.)

这是浏览表格时的结果。

我的计数查询是

SELECT count(*) FROM `table_name`

这将返回为602030

【问题讨论】:

标签: mysql phpmyadmin


【解决方案1】:

当您使用 phpmyadmin 或 heidiSQL 等工具进行浏览时,会执行如下查询:

SHOW TABLE STATUS LIKE 'table';

这个值是不准确的,如果你多次运行它,它总是给出不同的结果。

反之查询:

select count(*) from table

实际上是在计算记录,并给出正确的结果。

正如mysql文档https://dev.mysql.com/doc/refman/8.0/en/show-table-status.html中提到的:

一些存储引擎,例如 MyISAM,存储 准确计数。对于其他存储引擎,例如 InnoDB,此值为 一个近似值,可能与实际值相差 40% 到 50%。在这种情况下,请使用 SELECT COUNT(*) 获得准确的 数。

【讨论】:

    【解决方案2】:

    Mysql 说:通过 INNODb,总数只是计数的近似值。

    https://dev.mysql.com/doc/refman/8.0/en/show-table-status.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多