[firebase-br] Performace em SQL.

Pedro Braga bragaped em gmail.com
Qua Nov 9 15:45:39 -03 2011


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



Mais detalhes sobre a lista de discussão lista