Нет ничего плохого в кэшировании отчета за определенный период времени, если ваши данные не должны быть в реальном времени.
Однажды я работал над проектом, для создания которого требовались отчеты, которые занимали очень много времени. Было много больших таблиц и много объединений, чтобы получить все данные отчета. Решение состояло в том, чтобы создать отдельную «базу данных отчетов» с таблицами, которые содержали бы консолидированные данные из реальной базы данных. Отчеты будут запрашивать сводную базу данных отчетов. При этом отчеты должны будут только запрашивать таблицы, содержащие консолидированные данные, что значительно быстрее. Мы обновляли консолидированные таблицы в базе данных отчетов по ночам с помощью пакетных программ для ночных программ.