我有一个复杂的MySQL查询,从一个拥有超过150k行和多个JOIN和子查询的表中选择需要很长时间。虽然我限制了结果数量,但是我需要知道总行数。
有没有一种方法可以不用重复查询并使用COUNT(*)
作为字段来获取它们?(重复查询几乎会使脚本完成所需的时间增加一倍)
MySQL有一个叫做SQL_CALC_FOUND_ROWS
的子句,你需要在SELECT
之后,在任何字段名称之前添加它。然后,你需要调用第二个查询,只需使用SELECT FOUND_ROWS() AS rows
,它会告诉你上一个查询找到了多少行。