在MySQL中获取表格的行数?

7

有人能告诉我在MySQL中找到表行数时哪种方法更好吗?是执行

```SELECT COUNT(*) FROM table_name```

还是执行

```SELECT COUNT(1) FROM table_name```

哪种方法更快?

SELECT COUNT(*) FROM TABLE_NAME

或者查找在INFORMATION_SCHEMA中的表格TABLE中的行数?这将是一个经常用来计算页面分页计数的操作? 我应该补充说,表格最多只会有几千行。谢谢,Martin O'Shea。

对于几千行,使用 select count(*) 几乎可以瞬间完成计算。 - Hardwareguy
2个回答

18

MyISAM 中,这个查询:

SELECT  COUNT(*)
FROM    TABLE_NAME

由于该查询的数据被保存在表元数据中,所以它是瞬时的,几乎可以免费发出此查询,并且将始终获得正确的结果。

InnoDB中,此查询将逐一计算行数,这可能需要一些时间。

因此,如果您不需要精确的COUNT(*)值,则可以查询INFORMATION_SCHEMA


1
我认为,考虑到我需要使用行数/分页数来计算分页,在InnoDB表上最好的方法是使用INFORMATION_SCHEMA。计数只需要毫秒,但如果多个用户访问同一张表进行浏览,仍然会产生额外开销。 - MartinOShea

1

如果您发现COUNT(*)太慢,我建议考虑使用SQL_CALC_FOUND_ROWSSELECT FOUND_ROWS()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接