【问题标题】:phpMyAdmin not counting rows correctlyphpMyAdmin 没有正确计算行数
【发布时间】:2019-05-07 02:56:53
【问题描述】:

我不知道该怎么做。看起来像一个错误,但很明显我一定做错了什么。我正在编写查询 phpMyAdmin 的查询框:

SELECT * FROM `useralert`

显示第 0 - 24 行(总共 58157 行,查询耗时 0.0005 秒。)

现在,我将添加一个条件,它产生的行数必须少于总行数:

SELECT * FROM `useralert` WHERE exchange='AVG'

显示第 0 - 24 行(共 63870 行,查询耗时 0.0004 秒。)


看到了吗?表中的总行数为 58157,但使用附加条件查询会产生更多行?这怎么可能呢?我已经三重检查了我没有犯一些愚蠢的错误(并且行数没有从外部改变)。

【问题讨论】:

  • 我不知道 phpmyadmin 的具体细节,但有些驱动程序不需要估计确切的行数(至少在 JDBC 中),而只是给你一个“想法”。 . 不管那是什么。除非您实际检索所有行(您不是),否则您不会真正知道有多少行。
  • 尝试使用和不使用 WHERE 子句的 SELECT COUNT(*)

标签: mysql sql phpmyadmin


【解决方案1】:

有些数据库只给出返回行数的估计值,因此不应相信 phpMyAdmin 给出的数字是 100% 准确的。

如果您运行查询:

SELECT COUNT(*) FROM useralert

并将其与:

SELECT COUNT(*) FROM useralert WHERE exchange='AVG'

第一个查询应该大于或等于第二个。

【讨论】:

    【解决方案2】:

    出于性能原因,phpMyAdmin 返回一个近似计数。见https://docs.phpmyadmin.net/en/latest/config.html?highlight=maxexactcount#cfg_MaxExactCount

    如何在不更改配置的情况下获得准确的计数: https://docs.phpmyadmin.net/en/latest/faq.html#faq3-11

    【讨论】:

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