Fórum Procedure pouca performance #418569
15/06/2012
0
Galera eu tenho uma procedure que esta com a performance horrível, demorando 25 a 40s para trazer o resultado, eu queria melhor isso.
Eu tenho uma tabela de Estoque onde faço toda a manutenção do estoque, e tenho uma tabela de produtos onde é feita manutenção de preços, descrições, impostos, etc...
eu estou fazendo um select nos produtos e pegando o ultimo saldo do produto, mas esta muito lento. estou disponibilizando a procedure do firebird 2.5.
Eu tenho uma tabela de Estoque onde faço toda a manutenção do estoque, e tenho uma tabela de produtos onde é feita manutenção de preços, descrições, impostos, etc...
eu estou fazendo um select nos produtos e pegando o ultimo saldo do produto, mas esta muito lento. estou disponibilizando a procedure do firebird 2.5.
CREATE PROCEDURE SP_LISTA_ESTOQUE2 (
strvalor varchar(100))
returns (
prod_id integer,
prod_ean varchar(14),
prod_descricao varchar(80),
prod_pco_varejo DValor,
status varchar(8),
prod_estoq_min numeric(9,3),
prod_estoq_max numeric(9,3),
estoque numeric(9,3),
prod_cod_cfop varchar(60),
prod_und_trib varchar(6))
as
declare variable est_saldo numeric(9,3);
BEGIN
/* Consulta pelo Código */
FOR
SELECT
produtos.prod_id,
produtos.prod_ean,
produtos.prod_descricao,
produtos.prod_valor_venda,
case
when produtos.status = A then ATIVO
else
INATIVO
end as prod_status,
produtos.prod_estoq_min,
produtos.prod_estoq_max,
produtos.prod_cod_cfop,
produtos.prod_und_trib
FROM
PRODUTOS
WHERE
produtos.prod_descricao starting with :strvalor or
produtos.prod_id starting with :strvalor
ORDER BY 1
INTO :prod_id,
:prod_ean,
:prod_descricao,
:prod_pco_varejo,
:status,
:prod_estoq_min,
:prod_estoq_max,
:prod_cod_cfop,
:prod_und_trib
DO
BEGIN
ESTOQUE = 0;
// NESTE LAÇO É QUE É TEM PERCA DE PERFORMACE
for select
coalesce(e1.estoq_atual,0)
from estoque e1
where e1.prod_id = :prod_id
and e1.estoq_id = (select
max(e2.estoq_id)
from estoque e2
where e2.prod_id = e1.prod_id)
into :est_saldo do
begin
ESTOQUE = est_saldo;
end
suspend;
END
END
Sidney Abreu
Curtir tópico
+ 0
Responder
Posts
20/06/2012
William
Colega qual a quantidade de registros nas tabelas envolvidas?
Existe índices nas tabelas?
Existe índices nas tabelas?
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)