[firebase-br] Relatorio de View lenta... alguma alternativa?

centriscorps em gmail.com centriscorps em gmail.com
Seg Nov 26 11:48:19 -03 2018


Faria o teste que o colega Gabriel citou. Além de experimentar o LEFT JOIN,
tentaria o INNER JOIN.
Outra coisa que vai ajudar muito é por índice nos campos datas e
pesquisá-los usando between.
Seria algo assim:

select campos
from tabela
where
data between dateadd(-2 years to current_date) and current_date


Renato



Em seg, 26 de nov de 2018 às 09:50, Gabriel Bonzanini <
gabriel.bonzanini em gmail.com> escreveu:

> Bom dia Sérgio.
>
> Reparei que você utiliza todas as tabelas diretamente na cláusula FROM.
> Considere fazer alguns testes utilizando LEFT JOIN entre as tabelas.
>
> Em seg, 26 de nov de 2018 às 09:06, SERGIO LOPES <
> sergio.comercialgloria em gmail.com> escreveu:
>
> > bom dia,
> >
> > Tenho uma view q agrupa dados de alguns tabelas:
> >
> > Inicialmente funcionava tranquilo mais agora depois da base ficar um
> pouco
> > maior percebi lentidão quando visualizo esta view (até 40 segundos). Já
> foi
> > verificado algumas coisas como:
> > 1 - os campos q estão dispostos nas where já possuem indices, exceto os
> de
> > datas;
> > 2 - verifico que quando rodo os selects individualmente nenhum deles
> > apresenta qualquer lentidão (1 segundo para executar);
> >
> > já li em alguns lugares que o comando union deixa lento mesmo, existe
> > alguma forma de melhorar esse script ou utilizar de outro método mais
> > eficaz q me retorne o mesmo resultado?
> >
> > CREATE VIEW LISTA_PRODUTOS_VENDA(
> >     PCODIGO, DESCRICAO, UN,MARCA, DATA, QUANTIDADE, SALDO, TOTAL, GRUPO,
> >     LK_CLIENTE, CMV, LK_VENDEDOR, TIPO)  AS
> > select pcodigo, descricao, un, marca_produto, data, qde, saldo_calculado,
> > v_total, grupo,
> > lk_cliente, coalesce( (cast( cmv as double precision) * cast( qde as
> double
> > precision) ),0) as cmv, lk_vendedor,
> >
> > case when venda.status in (12,13) then 'CANCELADO'
> >      when venda.tipo_venda = 4 then 'BONIFICACAO'
> >      when venda.tipo_venda = 2 then 'AVISTA'
> >      when venda.status not in (16,18) then 'FATURADO' end as tipo
> >
> > from venda, vendaitem, lista_produtos_geral
> > where lk_venda = vcodigo and lk_produto = pcodigo and data >=
> > current_date-(365*2)
> >
> > union all
> >
> > select lancITENS.ITEM, descricao, un, marca_produto, data, qde,
> > saldo_calculado, t_valor, grupo,
> > 0 as lk_cliente, coalesce( (cast( cmv as double precision) * cast( qde as
> > double precision) ),0) as cmv, lk_vendedor,  'BALCAO' as tipo
> > from movto, lanc, lancitens, lista_produtos_geral
> > where lk_lancamento = lanc.codigo and lk_movimento = movto.codigo and
> item
> > = pcodigo
> > and data >= current_date-(365*2) and lanc.conta <> 99
> >
> > union all
> >
> > select lancITENS.ITEM, descricao, un, marca_produto, data, qde,
> > saldo_calculado, t_valor, grupo,
> > 0 as lk_cliente, coalesce( (cast( cmv as double precision) * cast( qde as
> > double precision) ),0) as cmv, lk_vendedor,  'CANCELADO' as tipo
> > from movto, lanc, lancitens, lista_produtos_geral
> > where lk_lancamento = lanc.codigo and lk_movimento = movto.codigo and
> item
> > = pcodigo
> > and data >= current_date-(365*2) and lanc.conta = 99
> >
> > union all
> >
> > select pcodigo, descricao, un, marca_produto, data, qde, saldo_calculado,
> > t_valor, grupo,
> > lk_cliente, coalesce( (cast( cmv as double precision) * cast( qde as
> double
> > precision) ),0) as cmv, lk_vendedor,
> >
> > case when orc.status = 55 then 'CANCELADO'
> >      when coalesce((select r.status from orcremessa r where r.codigo =
> > orc.lk_remessa),0) in (3,4) then  case when orc.status = 11 then
> > 'BONIFICACAO' else 'EM ROTA' end
> >      else
> >         case when orc.status = 11 then 'ROMANEIO BONIF'
> >         when orc.status not in (10) THEN 'ROMANEIO' ELSE 'OUTROS' end
> >
> > end as tipo
> >
> > from orc, orcitem, lista_produtos_geral
> > where lk_orcamento = orc.codigo and item = pcodigo and data >=
> > current_date-(365*2)
> > ______________________________________________
> > 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://www.firebase.com.br/pesquisa_lista.html
> >
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista