Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server :requête rapide, mais lente à partir de la procédure

J'ai eu le même problème que l'affiche originale mais la réponse citée n'a pas résolu le problème pour moi. La requête s'exécutait toujours très lentement à partir d'une procédure stockée.

J'ai trouvé une autre réponse ici "Parameter Sniffing", Merci Omnibuzz. Se résume à utiliser des "variables locales" dans vos requêtes de procédure stockée, mais lisez l'original pour plus de compréhension, c'est une excellente rédaction. ex.

Voie lente :

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

Mode rapide :

CREATE PROCEDURE GetOrderForCustomersWithoutPS(@CustID varchar(20))
AS
BEGIN
    DECLARE @LocCustID varchar(20)
    SET @LocCustID = @CustID

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

J'espère que cela aidera quelqu'un d'autre, cela a réduit mon temps d'exécution de plus de 5 minutes à environ 6-7 secondes.