У меня нет большого опыта работы с базами данных, поэтому я не знаю, что лучше для долгосрочной производительности, лучшей практики и т. Д.
Вот мой (гипотетический) случай: представьте, что у вас есть база данных о клиентах и истории заказов на покупку для каждого. Вы хотите отслеживать, сколько покупает каждый клиент. Я могу думать о двух способах вычисления этого:
1) Просто делайте СУММУ () каждый раз, когда это необходимо. Это простое решение, но проблема заключается в том, что этой базе данных может быть 20 лет с десятками тысяч строк для каждого клиента. По мере добавления покупок в базу данных операция SUM () будет рассчитываться дольше.
2) Сохраните сумму, сохраненную в кэше, в таблице информации о клиентах, и каждый раз, когда совершается новая покупка (обновляется, удаляется и т. Д.), Обновляйте этот кэш. Таким образом, независимо от количества заказов на покупку, время расчета не увеличится. Недостатком является то, что это менее гибкое решение (только сумма по всем строкам, как насчет суммы за месяц? Другие интервалы? И т. Д.); это кэшированное значение может как-то не синхронизироваться с фактическим итогом (технически это не должно происходить, но может произойти)
Так что мне делать для этого? Я знаю, что не должен хранить ничего, что я могу рассчитать на основе того, что уже есть в базе данных, но часть меня не любит тот факт, что этот тип вычислений ухудшится со временем, и что есть некоторая элегантность для выбора 2.