[firebase-br] Select muito lento
Diego Bulgarelli
diegobulg em gmail.com
Seg Fev 20 13:59:18 -03 2012
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
>
> ______________________________________________
> 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
>
Mais detalhes sobre a lista de discussão lista