Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server:Abfrage schnell, aber langsam von der Prozedur

Ich hatte das gleiche Problem wie das Originalposter, aber die zitierte Antwort hat das Problem für mich nicht gelöst. Die Abfrage lief immer noch sehr langsam von einer gespeicherten Prozedur.

Ich habe hier eine andere Antwort gefunden "Parameter Sniffing", Danke Omnibuzz. Läuft auf die Verwendung von "lokalen Variablen" in Ihren Abfragen für gespeicherte Prozeduren hinaus, aber lesen Sie das Original zum besseren Verständnis, es ist eine großartige Beschreibung. zB

Langsamer Weg:

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

Schneller Weg:

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

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Hoffe, das hilft jemand anderem, dadurch hat sich meine Ausführungszeit von 5+ Minuten auf etwa 6-7 Sekunden reduziert.