[firebase-br] Firebird LENTO

Alisson alisson em ecosbr.com
Sex Jul 18 11:43:46 -03 2008


faço o seguinte:
no afte insert da tabela de lançamentos executo isso:
      EXECUTE PROCEDURE sp_atualiza_saldos_insert(NEW.CODIGO);

que faz isso abaixo:

begin
  Select Extract(Year From DATA),Extract(Month From DATA),
         contad,centd,contac,centc,valor
    from LANCAM
    Where codigo=:IDLANCAMENTO
     into :ANO,:MES,
          :CONTAD,:CENTD,:CONTAC,:CENTC,:VALOR;
  --para não atualizar com null
  if (valor is null) then valor=0;

  For select contas from SP_RETORNA_CONTA(:CONTAD) INTO :CONTAS DO Begin
    select saldos.saldo from saldos Where CONTA=:CONTAS And Ano=:ANO And 
Mes=:MES into :SALDOATUAL;
       --atualiza saldos do ano corrente e posterior
       Update SALDOS S Set S.SALDO=(s.saldo-:VALOR)
       Where CONTA=:CONTAS And ((Ano=:ANO And Mes>=:MES) or (Ano>:ANO And 
Mes>=1));
       --atualiza debitos
       Update SALDOS S Set S.DEBITO=(S.DEBITO+:VALOR)
       Where CONTA=:CONTAS And Ano=:ANO And Mes=:MES;
  End

  For select contas from SP_RETORNA_CONTA(:CONTAC) INTO :CONTAS DO Begin
    select saldos.saldo from saldos Where CONTA=:CONTAS And Ano=:ANO And 
Mes=:MES into :SALDOATUAL;
       --atualiza saldos do ano corrente e posterior
       Update SALDOS S Set S.SALDO=(s.saldo+:VALOR)
       Where CONTA=:CONTAS And Ano=:ANO And ((Ano=:ANO And Mes>=:MES) or 
(Ano>:ANO And Mes>=1));

       --atualiza creditos
       Update SALDOS S Set S.CREDITO=(S.CREDITO+:VALOR)
       Where CONTA=:CONTAS And Ano=:ANO And Mes=:MES;
  End

end

a porcedure SP_RETORNA_CONTA(:CONTAC) faz o controle de níveis.
retorna as contas que devem ser atualizadas
1.1.1.01.001
1.1.1.01
1.1.1
1.1
1
----- Original Message ----- 
From: "marcelo - teflamar" <marcelo em teflamar.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, July 18, 2008 11:24 AM
Subject: Re: [firebase-br] Firebird LENTO


melhor ainda:
pelo movimento some todos os débitos, some todos os créditos agrupados
por conta, nas contas analíticas.(seu nível 5).
totalize os níveis sintéticos (nivel 4 no seu caso)
calcule o nível 3 pelo nível 4, o nível 2 pelo nível 3, o nível 1 pelo
nível 2. pronto, tá contabilizado.
marcelo luiz stefaniak

Eduardo Pelizzari de Andrade escreveu:
> Faça ao contrário, de um for select para pegar os valores de cada conta,
> depois de um update apenas em cada conta, o processo será muito mais
> rápido.
>
> Eduardo Pelizzari de Andrade
> Persoft Softwares Aplicativos
>
>
>
>
> Alisson escreveu:
>
>> olha a coisa tá feia aqui.
>> Tem um processo que está levando cerca de 30 minutos!
>>
>> é um sistema de contabilidade.. para a migração ficar mais rápida eu
>> primeiro transfiro os lançamentos da tabela DBF
>> sem que sejam calculados os saldos das contas. após tranferir cerca de
>> 21.000 registros(lançamentos contábeis) eu disparo uma rotina para
>> reprocessar os lançamentos ou seja: Pegar o valor de cada lançamento e
>> atualizar o saldo da conta débito e conta credito. porém plano de contas 
>> tem
>> essa estrutura:
>> EX:
>> 1
>> 1.1
>> 1.1.1
>> 1.1.1.01
>> 1.1.1.01.001( os lançamentos são nessa conta, mas todos os níveis acima
>> devem ser atualizados os saldos tambem);
>>
>> porém estou achando 30 minutos d+!
>>
>> Abraços!
>> Alisson Marcel
>>
>>
>>
>> ----- Original Message ----- 
>> From: "Gustavo Moda" <gustavo.moda em gmail.com>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Thursday, July 17, 2008 4:51 PM
>> Subject: Re: [firebase-br] Firebird LENTO
>>
>>
>> Alisson,
>>
>> Verifique se nos updates o where possui indice.
>> Isso deixa muito lento.
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>>
>>
>>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa



-- 
No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.0/1555 - Release Date: 16/07/2008 
06:43






Mais detalhes sobre a lista de discussão lista