MySQL计算总行数

时间:2010-03-03 02:09:13

标签: mysql count

我有一个复杂的MySQL查询,需要花费大量时间,从一个行超过150k的表和几个JOINS和子查询中进行选择。我限制了结果的数量,但我需要知道总行数。

有没有办法不用COUNT(*)作为字段来重复查询? (重复查询几乎使脚本完成所需的时间翻倍)

2 个答案:

答案 0 :(得分:3)

MySQL有一个名为SQL_CALC_FOUND_ROWS的子句,它放在SELECT之后和任何字段名之前。然后,您调用仅SELECT FOUND_ROWS() AS rows的第二个查询,它会显示上一个查询找到的行数。

答案 1 :(得分:2)

实际上两个查询可能会更快(所以你可能只想做一些快速测试):

在任何情况下,尝试确保COUNT(*)可以使用索引(如果使用EXPLAIN查询,它将在Extra列中说“using index”)

您还可以考虑缓存COUNT(*)结果,如果它不必是精确的(因为您限制了结果)。