Лучшим решением является индексированное представление (терминология SQL Server) или материализованное представление (терминология Oracle) или материализованная таблица запросов (терминология DB2). Все эти решения поддерживают актуальность данных в режиме реального времени. Без обслуживания.
Когда ваша платформа не поддерживает такие типы объектов базы данных, вы должны прибегнуть к использованию таблицы вместе со всеми другими вещами, необходимыми для сохранения правильности данных. Вы можете сохранить данные прямо с
Если вы используете триггеры, вам, вероятно, следует также запускать периодическое задание cron, чтобы убедиться, что сохраненные данные соответствуют вычисленным данным.
Помогает, что в реальном мире большинство таких требований действительно не должны быть актуальными в реальном времени. Такие цифры обычно поддерживают управленческие решения; задержка даже дня часто приемлема. (Другими словами, иногда это помогает воспринимать это как проблему хранилища данных или как отчет, а не как проблему OLTP.) Мне приходилось обсуждать подобные требования много раз. У меня никогда не было никого, кто бы отказывался принять двухчасовой цикл обновления. (Но это, безусловно, зависит от приложения.)