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

SQL Server:Forespørgsel hurtig, men langsom fra procedure

Jeg havde det samme problem som den originale plakat, men det citerede svar løste ikke problemet for mig. Forespørgslen kørte stadig rigtig langsomt fra en lagret procedure.

Jeg fandt et andet svar her "Parameter Sniffing", tak Omnibuzz. Det koger ned til at bruge "lokale variabler" i dine lagrede procedureforespørgsler, men læs originalen for mere forståelse, det er en fantastisk opskrivning. f.eks.

Langsom vej:

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

Hurtig måde:

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

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Håber, at dette hjælper en anden, fordi jeg ved at gøre dette reducerede min udførelsestid fra 5+ minutter til omkring 6-7 sekunder.



  1. MySQL:Hvordan kopierer man rækker, men ændrer nogle få felter?

  2. PREVIEW:SentryOne Plan Explorer-udvidelse til Azure Data Studio

  3. Postgres tid med tidszone lighed

  4. ASCII() eksempler – MySQL