MySQL总行数

问题描述:

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

有没有办法重复查询与COUNT(*)作为领域得到他们? (重复查询几乎使脚本完成的时间加倍)

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

在任何情况下,尽量确保COUNT(*)可以使用索引(如果您使用EXPLAIN查询,它会在Extra列中显示“使用索引”)

如果不需要精确地确定,您也可以考虑缓存COUNT(*)结果(因为你限制你的结果)。

MySQL有一个名为SQL_CALC_FOUND_ROWS的子句,您在SELECT之后和任何字段名称之前放置了子句。然后你调用第二个查询,它只是SELECT FOUND_ROWS() AS rows,它给你前面的查询找到了多少行。

+0

有关详情,请访问:http://dev.mysql.com/doc/refman/4.1/en/information-functions.html#function_found-rows – cmptrgeekken 2010-03-03 02:15:17