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

Gabriel Bonzanini gabriel.bonzanini em gmail.com
Seg Nov 26 09:47:43 -03 2018


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
>



Mais detalhes sobre a lista de discussão lista