Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jorge Humberto

Procedure Lenta

Recommended Posts

Boa tarde amigos,

Estou começando a trabalhar com banco de dados, mais especificamente SQL Server 2008.

Estou com um problema. Tem um procedure que demora muito para trazer os resultados.

Como poderia fazer para melhorar a performance dela ? Segue a proc abaixo:

 

 

CREATE procedure spVerificaCompraCartao  

@nCpf numeric,  
@nCodEvento integer  

as  

begin  

if not exists(select c.nCodCliente from CLIENTE c  
     inner join tbCartaoCliente cc  
      on cc.nCodCliente = c.nCodCliente  
     inner join tbStatusCartaoEvento sce  
     on sce.nCodCartaoCliente = cc.nCodCartaoCliente  
     inner join ITEM i  
     on i.COD_ITEM = sce.nCodItem  
     where i.COD_EVENTO = @nCodEvento  
     and c.nCPF_CNPJ = @nCpf  
     AND sce.sStatus <> 'E')  
 begin  
  select RET = 0, DES_RET = 'CLIENTE NÃO COMPROU PARA ESTE EVENTO'  
 end  
else  
 begin  
  select RET = 1,  
      DES_RET = 'O CLIENTE JÁ EFETUOU UMA COMPRA PARA ESTE EVENTO' --+ c.sNOME + ' JÁ EFETUOU UMA COMPRA COM O SEU CARTÃO NO DIA '+  
       --convert(varchar,p.DES_DTCOMP,103)+ ' NO EQUIPAMENTO:' + eq.DES_NOME  
  from CLIENTE c  
     inner join tbCartaoCliente cc  
     on cc.nCodCliente = c.nCodCliente  
     inner join tbStatusCartaoEvento sce  
     on sce.nCodCartaoCliente = cc.nCodCartaoCliente  
     inner join ITEM i  
     on i.COD_ITEM = sce.nCodItem  
     where i.COD_EVENTO = @nCodEvento  
     and c.nCPF_CNPJ = @nCpf  
     and sce.sStatus <> 'E'   
 end  
end  

 

 

 

Obrigado,

 

Jorge

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá..!! B)

 

 

As Vezes o problema da lentidão não é da procedure e sim por falta de indices ou chaves nas tabelas.

 

Você já verificou estes detalhes?

Dá uma olhada nas tabelas que fazer parte do seu script.! :joia:

 

Abraço..!! :clap:

 

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo com o Renato,

 

Verifique primeiramente os indices,

o SQL Server 2008 possui algumas ferramentas legais para monitoramento de performance como o Database Tuning Advisor.

 

Eu prefiro analisar o gargalo da querie pelo Results Pane (Windows>Results Pane ou Ctrl+R) e a partir daí criar os indices

 

 

Outra coisa,

revise sua proc,

Nao sei se todo aquele SELECT do IF é realmetne necessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.