Я думаю, что имеет смысл периодически запускать запрос для обновления данных, а не попадать в базу данных всякий раз, когда кто-то загружает страницу
Лично я бы пошел с обоими.например,
SELECT customer, COUNT(orders.id), SUM(order_lines.value)
FROM orders, order_lines
WHERE orders.id=order_lines.order_id
AND orders.placed>@last_time_data_snapshotted
AND orders.customer=@some_user
GROUP BY customer
UNION
SELECT user, SUM(rollup.orders), SUM(rollup.order_value)
FROM rollup
WHERE rollup.last_order_date<@last_time_data_snapshotted
AND rollup.customer=@some_user
GROUP BY customer
, а не попадать в базу данных каждый раз, когда кто-то загружает страницу
На самом деле, в зависимости от модели использования, это может иметь большой смысл.Но это не обязательно исключает описанный выше метод - просто установите порог, когда вы будете помещать агрегированные данные в предварительно консолидированную таблицу, и тестировать порог при каждом запросе.