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

Hélio Oliveira hpensador em gmail.com
Seg Nov 26 12:34:56 -03 2018


Views a medida que a tabela vai crescendo, tende a ficar lenta.
Uma sugestão seria você criar um Stored Procedure selecionável, com 
certeza terá uma ganho considerável na performace.

Em 26/11/2018 08:04, SERGIO LOPES 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