Duplicação possível:
armazenamento versus cálculo de valores agregados
Em um emprego antigo, tínhamos esse banco de dados, não estava normalizado direito, algumas tabelas não eram mais usadas, era patch após patch. Em conclusão, foi uma bagunça.
Uma vez, enquanto eu estava tentando consertá-lo, vi que alguns campos eram calculados em tempo real e isso tornava o banco de dados muito lento, realizando consultas de seleção simples. Desde então, não calculo mais nenhum campo, apenas armazeno os dados como estão.
Isso é recomendado? quando é melhor armazenar dados do que calculá-los?
Obrigado rapazes.
Depende.
O armazenamento de valores derivados pode acelerar o processamento de solicitações de leitura posteriores, pois os valores não precisam ser calculados novamente.
Porém, há um problema importante em desnormalizar seus dados dessa maneira: você deve garantir que não seja possível que o valor derivado fique desatualizado sem ser detectado. Se seus dados não estiverem em uma forma suficientemente normal, as inconsistências podem surgir e causar problemas. Isso significa que todos os lugares que atualizam os dados dos quais o valor é derivado também devem atualizar o valor derivado ou, de alguma forma, marcá-lo como precisando ser atualizado antes de ser considerado confiável. Atualizar os valores derivados por meio de gatilhos pode atenuar a necessidade de adicionar essa lógica a muitos lugares em seu código, mas esteja ciente de que os gatilhos têm seu próprio conjunto de problemas potenciais (problemas de bloqueio inesperados, código na camada de lógica de negócios que não espera valores que não espera t referência explícita à atualização, os gatilhos podem ser desabilitados e assim por diante).
Geralmente, é mais rápido armazenar os dados do que calcular na hora. Se você estiver armazenando dezenas de milhares de variáveis, no entanto, isso pode não ser verdade.