Ir para conteúdo
Fórum Script Brasil
  • 0

Sun, como evitar de somar tudo novamente a cada inserção


Free Lancer

Pergunta

Pessoal, estou com um pequeno problema.

Estamos com um banco que ficou um tanto grande, mas sem problema até ai, a questão é que fazemos as somatorias usando o Sun e jogamos em um total, porém cada vez que colocamos mais uma inserção ele soma tudo novamente e dai recoloca o total.

Queria saber se tem como evitar isso, alguma forma para que ele não precise novamente fazer a somatoria cada vez que for inserir.

O código é retirado da aplicação, não é importante a perfeição do SQL, só estou querendo uma idéia de como implementar isso... a base do SQL usado esta abaixo

select count(codsangria) as qtd,');

sum(iif(DEBCRED=''C'', S.TOTCHEQUE, S.TOTCHEQUE*-1)) as totchq,');

sum(iif(DEBCRED=''C'', S.TOTDINHEIRO, S.TOTDINHEIRO*-1)) as totdin');

from Sangria S, Caixa C'

Where S.CodLoja = C.CodLoja and Tipo <> ''PV''')

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Free,

Não entendi ao certo o que está precisando... mas vamos lá.

Toda vez que é realizada uma inserção, o script é executado e a soma é refeita, ok? você queira outra forma de implementar isto? Se for, uma outra forma é armazenar sempre a ultima soma realizada. Assim não precisaria recontar o que já foi contado. Apenas pegar o valor somado e acrescentar o valor da nova inserção.

O problema desta implementação é a certeza de que a soma está correta. O controle deverá ser bem implementado, para que não tenha informações errôneas.

Fica a dica:

- Em modelagem, não é uma boa prática você gravar dados que podem ser gerados a partir dos dados já existentes.

Traduzindo (rs): se você tem vários valores, não é uma boa prática gravar a soma destes valores, pois eles podem ser calculados. Mas um ponto importante para que uma implementação desta seja aceita, seria a performance!! Pese no custo / benefício da implementação e depois avalie a melhor.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
Bom dia Free,

Não entendi ao certo o que está precisando... mas vamos lá.

Toda vez que é realizada uma inserção, o script é executado e a soma é refeita, ok? você queira outra forma de implementar isto? Se for, uma outra forma é armazenar sempre a ultima soma realizada. Assim não precisaria recontar o que já foi contado. Apenas pegar o valor somado e acrescentar o valor da nova inserção.

O problema desta implementação é a certeza de que a soma está correta. O controle deverá ser bem implementado, para que não tenha informações errôneas.

Fica a dica:

- Em modelagem, não é uma boa prática você gravar dados que podem ser gerados a partir dos dados já existentes.

Traduzindo (rs): se você tem vários valores, não é uma boa prática gravar a soma destes valores, pois eles podem ser calculados. Mas um ponto importante para que uma implementação desta seja aceita, seria a performance!! Pese no custo / benefício da implementação e depois avalie a melhor.

Espero ter ajudado.

Vamos lá Flávio..., agradeço antecipadamente pela atenção... vou tentar ser mais claro em relação ao problema

é uma tabela que recebe debito ou sangria que é retirar algum valor, tudo funcionando perfeitamente, sql perfeita..., porém se eu faço um novo debito ou crédito em uma data antiga acontece que o banco tem que recalcular apartir da inserção da data todos os valores do saldo total...

Algo como

Data. | Tipo - Debito/Sangria | Valor | Saldo-Total:

12/06/2012 D 10 10

13/06/2012 S 7 3

13/06/2012 D 20 23

O que ocorre, imagina uma tabala com anos, 40.000 registros... quando eu coloca uma data de 1 anos para traz ele insere no lugar certo e vem calculando todos os saldos totais de todas as linhas até chegar na ultima.

Todos os tratamentos estão certos, faz perfeitamente, o problema é que quando recalcula tudo isso fica 2 min parado e este é o problema que estou tentando evitar... alguma forma de arrumar a tabela de uma forma que não fique tão pesado.

:( a questão é que sou programador Delhi e não domino assim o SQL para saber outra solução melhor

Editado por Free Lancer
Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Free,

É... realmente a modelagem que não está ideal. Igual postei na "dica" acima. Mas para resolver isso, pode-se fazer os seguinte teste:

- Criar indice(s) na(s) coluna(s) que estão sendo manipuladas.

A principio estou vendo apenas esta forma de otimizar. Teoricamente, a demora está associada a quantidade de processo mesmo. São várias inserções em que devem ser recalculadas.

A outra forma seria a remodelagem.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...