none
Velocidade/praticidade de usar SUM() em banco muito grande RRS feed

  • Discussão Geral

  • Tenho um sistema que possui um plano de contas simples com os campos 'Valor de Entrada' e 'Valor de Saída'. Em relatórios usamos um SUM() em cada um desses campos para retornar o saldo do plano de contas. As vezes há cláusula WHERE mas esse relatório também é usado totalizando todos os registros lançados no plano de contas. Esse banco já possui mais de 10 anos de histórico e os relatórios estão começando a ficar lentos. Agora vamos criar outros campos numéricos para fins similares e gostaria de saber se tal prática (de 'não armazenar' nenhum cálculo (Sum() ou somas como Parcela+Juros-Descontos=Recebido) no banco de dados, realizando o cálculo em todo momento necessário) é algo que devemos manter ou mudar. Será que o SQL Server vai conseguir manter velocidade conforme o banco aumenta? Atualmente o banco possui 3gb e os relatórios levam 10s para retornar a Query.

    PHB

    • Tipo Alterado Heloisa Pires segunda-feira, 2 de abril de 2012 13:33 dúvida para discussão
    quinta-feira, 29 de março de 2012 20:42

Todas as Respostas

  • Boa tarde Pablo,

    Neste caso há 2 situações:

    1º a questão da totalização,

    10s para uma query em uma tabela inteira creio ser válido ( embora eu não saiba quantos registros há nesta tabela).

    Para pensar em mudar a estratégia de armazenar as informações ( totalização nesta caso ) creio que teria que ser avaliado a espectativa de crescimento deste banco.

    Afinal penso eu que 3Gb em 10 anos é muito pouco, se for continuar crescendo neste ritmo ou que seja um pouco mais, poderia permanecer da maneira na qual está hoje.

    O segundo ponto é a questão de campos cálculados (Parcela+Juros-Descontos=Recebido), pesquise sobre  "Persisted Computed Column", acho este recurso bem interesante e neste caso talvez você possa implementa-lo.

    Mais ai você teria que havaliar sobre a questão de esta coluna ficar gravada no banco ( consumindo espaço ), se isto não for impedimento, faça alguns testes para poder utilizar a mesma.

    Abçs 

    Adriano Nascimento

    quinta-feira, 29 de março de 2012 21:14
  • Pablo, bom dia.

    As dicas do Adriano são válidas e devem ser levadas em consideração, mas vc já pensou em criar uma nova plataforma OLAP em sua estrutura?

    Talvez esteja na hora de montar uma estrutura desse tipo, uma vez que vc citou que existem demandas de realatórios e com essa demanda crescendo, se faz cada vez necessário de ter uma análise mais rápida. A estratégia OLAP vem pra resolver este problema.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    sexta-feira, 30 de março de 2012 12:41