У меня есть набор данных в MySQL, где использование лимита - это уже дорогой запрос, а поиск количества результатов также дорог. Таким образом, я хотел бы избежать выполнения другого запроса для определения количества результатов. Я не могу использовать 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, однако это очень и очень медленно. Я перепробовал все оптимизации индексов, и давайте просто предположим, что об этом не может быть и речи.
Теперь это становится вопросом дизайна ... как разрешить пользователю просматривать эти данные, когда я не знаю последнюю страницу ? Я знаю только, если они зашли слишком далеко (например: запрос не дал результатов).