sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server:Fråga snabbt, men långsam från proceduren

Jag hade samma problem som originalaffischen men det citerade svaret löste inte problemet för mig. Frågan gick fortfarande väldigt långsamt från en lagrad procedur.

Jag hittade ett annat svar här "Parameter Sniffing", Tack Omnibuzz. Går ner till att använda "lokala variabler" i dina lagrade procedurförfrågningar, men läs originalet för mer förståelse, det är bra att skriva. t.ex.

Långsam väg:

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

Snabbt sätt:

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

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Hoppas detta hjälper någon annan, att göra detta minskade min körningstid från 5+ minuter till cirka 6-7 sekunder.



  1. ODP.NET Oracle.ManagedDataAcess slumpmässiga ORA-12570-fel

  2. Vad är PL/SQL-lagrade procedurer i Oracle Database

  3. Aktivera TLS i Oracle Apps R12.2

  4. Hur kan jag exportera schemat för en databas i PostgreSQL?