[firebase-br] Select muito lento

Carlos - GMail krlosgilson em gmail.com
Ter Fev 21 13:37:12 -03 2012


Boa tarde! Minha tabela possui os índices corretamente, eu creio que a 
lentidão seja nos joins, só que não vi até agora um outro jeito de 
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