sql >> Databáze >  >> RDS >> Sqlserver

SQL Server:Dotazujte se rychle, ale pomalu z procedury

Měl jsem stejný problém jako původní plakát, ale citovaná odpověď mi problém nevyřešila. Dotaz stále běžel opravdu pomalu z uložené procedury.

Našel jsem zde další odpověď "Parameter Sniffing", Díky Omnibuzz. Zmenšuje se na použití "místních proměnných" v dotazech uložených procedur, ale pro lepší pochopení si přečtěte originál, je to skvělé zápis. např.

Pomalu:

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

Rychlý způsob:

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

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Doufám, že to pomůže někomu dalšímu, tím se mi zkrátila doba provádění z 5+ minut na asi 6-7 sekund.



  1. Nasazení Djanga do Heroku (chyba Psycopg2)

  2. Vysvětlení JSONB představeného PostgreSQL

  3. Připojte se k mysql v kontejneru dockeru z hostitele

  4. jak obnovit pohotovostní databázi z chybějícího archivního protokolu