sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:consulta rápida, pero lenta desde el procedimiento

Tuve el mismo problema que el póster original, pero la respuesta citada no me resolvió el problema. La consulta aún se ejecutaba muy lentamente desde un procedimiento almacenado.

Encontré otra respuesta aquí "Parameter Sniffing", Gracias Omnibuzz. Se reduce al uso de "Variables locales" en sus consultas de procedimientos almacenados, pero lea el original para una mayor comprensión, es una excelente redacción. por ejemplo

Manera lenta:

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

Vía 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 esto ayude a alguien más, hacer esto redujo mi tiempo de ejecución de más de 5 minutos a unos 6-7 segundos.