[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