[firebase-br] Performace em SQL. [Resolvido]

Pedro Braga bragaped em gmail.com
Qua Nov 9 16:53:50 -03 2011


Obrigado pelas Dicas fui tentar fazer um backup/restore e o que descobri
era que eu estava com 5 registros corrompidos na tabela de itens_venda ai
realizei a reparação do BD e o mesmo está funcionando perfeitamente agora.
Obrigado pelas dicas.


Em 9 de novembro de 2011 16:03, Edson Marco <edmafer em gmail.com> escreveu:

> Primeira coisa... idente o negócio (mesmo se for só no email) é difícil até
> para você entender sem identar.
>
> Segundo, pode haver vendas sem itens de vendas? Se não, troque os left por
> inner que vai melhorar seu desempenho.
>
> Terceiro, se você fez muitas alterações nos dados do seu banco refaça
> as estatística dos índices, mesmo se você criou um índice novo o firebird
> não vai achá-lo atrativo enquanto você não refazer as estatísticas
> dos índices (um gbak & restore resolve isto)
>
> Quarto revise seus filtros e ligações de tabelas... realmente é preciso
> todas estas ligações? É realmente necessário esta union?
>
> Quanto ao quarto item se forem absurdas minhas perguntas simplesmente
> ignore-as pois não li seu select a ponto de entender o que ele realmente
> tenta fazer.
>
> []'s
>
> 2011/11/9 Pedro Braga <bragaped em gmail.com>
>
> > Boa Tarde,
> >  Tenho a SQL Abaixo para Listar os Itens Vendidos em um totalizador por
> > pedido.
> > select
> >
> >
> v.num_pedido,i.num_item,v.dat_inclusao,v.forma_pagamento,i.cod_produto,i.descricao,i.quantidade,i.vlr_unitario,i.vlr_total
> > from vendas v left outer join item_venda i on v.num_pedido = i.num_pedido
> > and v.cod_empresa=i.cod_empresa and v.num_terminal=i.num_terminal
> > where  v.cod_cliente = :cod and v.cod_empresa_cliente = :cod_emp_cli and
> > v.COD_SITUACAO=1 and v.cod_empresa=:cod_empresa
> > union all
> > select i.num_pedido,cast(9999 as integer) as
> > num_item,v.dat_inclusao,cast('' as varchar(3)),cast(0 as integer) as
> > cod_produto,cast('TOTAL --->' as varchar(60)) as descricao,cast(0 as
> > numeric(15,2)) as quantidade,cast(0 as numeric(15,2)),SUM(i.vlr_total) as
> > vlr_total
> > from vendas v left outer join item_venda i on v.num_pedido = i.num_pedido
> > and v.cod_empresa=i.cod_empresa and v.num_terminal=i.num_terminal
> > where  i.cod_cliente = :cod and i.cod_empresa_cliente = :cod_emp_cli and
> > i.COD_SITUACAO=1 and i.cod_empresa=:cod_empresa
> > group by 1,3
> > order by 3 desc,1,2
> >
> > o Plano de execução do mesmo
> > Plan
> > PLAN JOIN (V INDEX (FK_VENDAS_2, FK_VENDAS_1), I INDEX
> > (FK_ITEM_VENDA_EMPRESA, PK_ITEM_VENDA))
> > PLAN SORT (JOIN (V INDEX (FK_VENDAS_2, FK_VENDAS_1), I INDEX
> > (FK_ITEM_VENDA_EMPRESA, PK_ITEM_VENDA)))
> >
> > Adapted Plan
> > PLAN JOIN (V INDEX (FK_VENDAS_2, FK_VENDAS_1), I INDEX
> > (FK_ITEM_VENDA_EMPRESA, PK_ITEM_VENDA)) PLAN SORT (JOIN (V INDEX
> > (FK_VENDAS_2, FK_VENDAS_1), I INDEX (FK_ITEM_VENDA_EMPRESA,
> > PK_ITEM_VENDA)))
> >
> > conduto a pesquisa está levando cerda de 20 minutos em sendo que a tabela
> > vendas possui uma media de 40 mil registros e a de itens cerca de 90 mil
> > como a massa de dados não é tão espresiva assim gostaria de orientações
> > para para melhorar a performace do select
> >
> > Exemplo do resultado
> > Pedido  Código      Descrição Produto    Qtde  Valor   ***
> > 15           1                  testes                           1
> > 5,00
> > 15          2                  coca-cola                    5
> >  50,00
> >                                    total  --->
> >    55,00
> > 16           15                enrolado                     1
>  1,75
> > 16          23                 suco uva                    2
> 2,50
> >                                    total  --->
> >     4,25
> > ______________________________________________
> > 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
> >
>
>
>
> --
> /*
>  * Edson Marco Ferrari Junior
>  * edmafer em edmafer.com.br
>  * http://www.edmafer.com.br
>  */
> ______________________________________________
> 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