Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server:Consulta rápida, mas lenta do procedimento


Eu tive o mesmo problema que o pôster original, mas a resposta citada não resolveu o problema para mim. A consulta ainda ficou muito lenta em um procedimento armazenado.

Encontrei outra resposta aqui "Parameter Sniffing", Obrigado Omnibuzz. Resumindo-se ao uso de "variáveis ​​locais" em suas consultas de procedimento armazenado, mas leia o original para mais compreensão, é uma ótima redação. por exemplo.

Modo lento:
CREATE PROCEDURE GetOrderForCustomers(@CustID varchar(20))
AS
BEGIN
    SELECT * 
    FROM orders
    WHERE customerid = @CustID
END

Maneira rápida:
CREATE PROCEDURE GetOrderForCustomersWithoutPS(@CustID varchar(20))
AS
BEGIN
    DECLARE @LocCustID varchar(20)
    SET @LocCustID = @CustID

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Espero que isso ajude alguém, fazendo isso reduziu meu tempo de execução de 5+ minutos para cerca de 6-7 segundos.