1

有一个 ~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 更好吗?

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

4

3 回答 3

5
select count(id) from $table

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

参考

+-----------+
| COUNT(id) |
+-----------+
|  <count>  |
+-----------+
于 2012-11-03T23:24:58.553 回答
4

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

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

于 2012-11-03T23:25:00.173 回答
3

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

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

于 2012-11-03T23:24:58.973 回答