Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server:query veloce, ma lenta dalla procedura

Ho avuto lo stesso problema del poster originale ma la risposta citata non ha risolto il problema per me. La query è ancora molto lenta da una stored procedure.

Ho trovato un'altra risposta qui "Sniffing dei parametri", grazie Omnibuzz. Si riduce all'utilizzo di "variabili locali" nelle query della procedura memorizzata, ma leggi l'originale per una maggiore comprensione, è un ottimo riassunto. es.

Via lenta:

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

Via veloce:

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

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Spero che questo aiuti qualcun altro, così facendo ho ridotto il mio tempo di esecuzione da 5+ minuti a circa 6-7 secondi.