Я строю довольно большую систему статистики, которая должна позволять пользователям запрашивать статистику для заданного набора фильтров (например, диапазона дат).
например. Это простой запрос, который возвращает 10 результатов, включая player_id и количество убийств, совершенных каждым игроком:
SELECT player_id, SUM(kills) as kills
FROM `player_cache`
GROUP BY player_id
ORDER BY kills DESC
LIMIT 10
OFFSET 30
Приведенный выше запрос сместит результаты на 30 (т. Е. Третья «страница» результатов). Когда пользователь затем выбирает «следующую» страницу, он будет использовать OFFSET 40 вместо 30.
Моя проблема в том, что ничего не кэшируется, хотя пара LIMIT / OFFSET используется в одном и том же наборе данных, она выполняет SUM () снова, просто чтобы сместить результаты еще на 10.
Приведенный выше пример является упрощенной версией гораздо большего запроса, который просто возвращает больше полей и занимает очень много времени (20+ секунд и будет увеличиваться по мере роста системы).
Поэтому я, по сути, ищу решение для ускорения загрузки страницы путем кэширования состояния до применения LIMIT / OFFSET.