[firebase-br] Select muito lento

Carlos H. Cantu listas em warmboot.com.br
Qua Fev 22 20:44:44 -03 2012


Temos artigos sobre PLAN na FireBase.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

CG> Cantu, desculpa a ignorância, mas qual plano? onde posso ver isso?
>> Qual é o plano gerado pela consulta?
>>
>> []s
>> Carlos H. Cantu
>> www.FireBase.com.br  -www.firebirdnews.org
>> www.warmboot.com.br  - blog.firebase.com.br
>>
>> CG>  Boa tarde! Minha tabela possui os índices corretamente, eu creio que a
>> CG>  lentidão seja nos joins, só que não vi até agora um outro jeito de
>> CG>  melhorar. Valeu Diego Bulgari!
>>>> >>  Boa tarde!:)
>>>> >>
>>>> >>  Criou índices para estes campos?
>>>> >>  Pode tentar também fazer um backup e restaurar a fim de limpar sujeiras do
>>>> >>  banco.
>>>> >>
>>>> >>  Abraço
>>>> >>  Diego Bulgarelli
>>>> >>
>>>> >>  2012/2/20 Carlos - GMail<krlosgilson em gmail.com>
>>>> >>
>>>>>> >>>  >    Bom dia a todos da lista!
>>>>>> >>>  >
>>>>>> >>>  >    Pessoal estou com um probleminha que to tentando resolver a dias, meu
>>>>>> >>>  >    select abaixo está demorando muito para retornar os dados, mesmo quando se
>>>>>> >>>  >    tem apenas um registro, a demora está sendo entre 30 a 60 seg. Tenho muitos
>>>>>> >>>  >    registros nessas tabelas, mas como mencionei acima mesmo para retornar
>>>>>> >>>  >    apenas um registro a demora é muito grande. Alguém poderia me dar um dica
>>>>>> >>>  >    de como aperfeiçoar esse select trazendo os mesmos resultados em um tempo
>>>>>> >>>  >    menor? Agradeço desde já a todos!
>>>>>> >>>  >
>>>>>> >>>  >    CREATE OR ALTER PROCEDURE SP_REL_RECIBOS_COMISSOES2 (
>>>>>> >>>  >        pidempresa integer,
>>>>>> >>>  >        pdatainicial date,
>>>>>> >>>  >        pdatafinal date,
>>>>>> >>>  >        pusuario varchar(10))
>>>>>> >>>  >    returns (
>>>>>> >>>  >        ousuario varchar(10),
>>>>>> >>>  >        ovrtaxas numeric(15,2),
>>>>>> >>>  >        ovrpgtospacote numeric(15,2),
>>>>>> >>>  >        ovrpgtostitulos numeric(15,2))
>>>>>> >>>  >    as
>>>>>> >>>  >    begin
>>>>>> >>>  >      for
>>>>>> >>>  >        select
>>>>>> >>>  >        distinct(d.usuario_comis) ousuario,
>>>>>> >>>  >        coalesce(sum((select sum(coalesce(s.vr_total,0)) from fichas_servicos s
>>>>>> >>>  >    left join tb_servicos ts on (s.codigo_servico = ts.ser_cod) where s.id_data
>>>>>> >>>  >    = d.id and ts.is_taxa = 1)),0) ovrtaxas,
>>>>>> >>>  >        coalesce(sum((select sum(coalesce(p.valor,0)) from
>>>>>> >>>  >    fichas_servicos_pgtos p left join sp_formaspgto f on (p.tipo_pgto = f.oid)
>>>>>> >>>  >    where p.id_data = d.id and f.ocontabiliza = 1)),0) ovrpgtospacote,
>>>>>> >>>  >        0.00 ovrpgtostitulos
>>>>>> >>>  >        from fichas_servicos_datas d
>>>>>> >>>  >        where (d.data between :pdatainicial and :pdatafinal) and
>>>>>> >>>  >        ((:pidempresa = 0) or (d.id_empresa =:pidempresa)) and
>>>>>> >>>  >        ((:pusuario = '') or (d.usuario_comis =:pusuario)) and
>>>>>> >>>  >        (coalesce(d.status,1)<>   2)
>>>>>> >>>  >        group by 1
>>>>>> >>>  >      union all
>>>>>> >>>  >        select
>>>>>> >>>  >        distinct(t.usuario_comis) ousuario,
>>>>>> >>>  >        0.00 ovrtaxas,
>>>>>> >>>  >        0.00 ovrpgtospacote,
>>>>>> >>>  >        sum(coalesce(t.vr_recebido,0)) ovrpgtostitulos
>>>>>> >>>  >        from titulos_receber_baixas t
>>>>>> >>>  >        left join sp_formaspgto f on (t.tipo_movimento = f.oid)
>>>>>> >>>  >        where (t.data between :pdatainicial and :pdatafinal) and
>>>>>> >>>  >        ((:pidempresa = 0) or (t.id_empresa =:pidempresa)) and
>>>>>> >>>  >        ((:pusuario = '') or (t.usuario_comis =:pusuario)) and
>>>>>> >>>  >        (f.ocontabiliza = 1)
>>>>>> >>>  >        group by 1
>>>>>> >>>  >      into :ousuario, :ovrtaxas, :ovrpgtospacote, :ovrpgtostitulos
>>>>>> >>>  >      do suspend;
>>>>>> >>>  >    end





Mais detalhes sobre a lista de discussão lista