[firebase-br] Select muito lento

Diego Bulgarelli diegobulg em gmail.com
Qua Fev 22 18:14:34 -03 2012


Boa tarde! :)
Você poderia extrair os metadados e criar um novo banco a partir dele
(CUIDADO COM CAMPOS BLOB). Talvez possa resolver.
Já tentou criar índices em todos os campos que são usados em WHERE? (Espero
não estar sendo chato xD)
Abraço

Em 21 de fevereiro de 2012 12:37, Carlos - GMail
<krlosgilson em gmail.com>escreveu:

> 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
>>>
>>
> ______________________________________________
> 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