Jump to content
Fórum Script Brasil
  • 0

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


Free Lancer
 Share

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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

Edited by Free Lancer
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.9k
    • Total Posts
      648.8k
×
×
  • Create New...