我在 MySQL 中有一个数据集,其中使用 limit 已经是一个昂贵的查询,并且查找结果的数量也很昂贵。因此,我想避免进行另一个查询来查找结果数。我不能使用 MYSQL_CALC_FOUND_ROWS 因为限制在子查询中:
SELECT * FROM items,
(
SELECT
item_id
FROM
(etc)
WHERE
some.field=<parameter>
AND (etc)
GROUP BY (something)
ORDER BY (something_else) DESC
LIMIT 15
) subset
WHERE item.id=subset.item_id
我可以留下连接项并取消子查询,然后可以使用 MYSQL_CALC_FOUND_ROWS,但这非常非常慢。我已经尝试了所有索引优化,让我们假设它是不可能的。
现在这更像是一个设计问题......当我不知道最后一页时,如何允许用户翻阅这些数据?我只知道他们是否走得太远(例如:查询不返回任何结果)。