[firebase-br] Select muito lento
Carlos - GMail
krlosgilson em gmail.com
Seg Fev 20 12:56:34 -03 2012
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