【问题标题】:Innodb showing incorrect count(id)Innodb 显示不正确的计数(id)
【发布时间】:2012-11-03 23:20:42
【问题描述】:

有一个 ~3G 文件大小的 innodb 表(我使用 innodb_file_per_table = 1),刚从转储文件和 ~1.3G 转储文件导入。不知道这里有多少记录。

当我执行“select count(id) from $table”时,我看到“27117291”(为了便于阅读,为 27,117,291)。 当我执行“select count(id) from $table limit 100”时,我还会看到“27117291”

为什么会这样? InnoDB 真的 比 MyISAM 更好吗?!

附:如果我执行“select count(id) from $table where id=73010460;”我看到“1”。

【问题讨论】:

  • 有什么问题?对我来说,一切似乎都正常。
  • limit 100 表示取前 100 行,不是吗?

标签: mysql innodb


【解决方案1】:
select count(id) from $table

返回一行,其中包含计数。所以你的限制没有任何区别。

(Reference)

+-----------+
| COUNT(id) |
+-----------+
|  <count>  |
+-----------+

【讨论】:

  • 是的。 LIMIT 限制返回的行数,并且不对返回的单个值设置最大值。
【解决方案2】:

我不是 SQL 专家,但我猜这是因为 count() 只返回 1 行,因此限制为 100 无济于事。

我猜你需要做更多这样的事情来获得预期的结果: select count((select id from x limit 100))

【讨论】:

    【解决方案3】:

    limit 不适用于该查询。计数查询返回 1 行,您限制为 100 行。 如果您的计数查询将返回超过 100 行,那将是有效的。

    对该查询的限制不限制计数,过滤器返回行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2021-10-26
      • 2019-08-09
      • 2018-08-11
      相关资源
      最近更新 更多