sql >> Database >  >> RDS >> Sqlserver

SQL Server:Query snel, maar traag van procedure

Ik had hetzelfde probleem als de originele poster, maar het geciteerde antwoord loste het probleem voor mij niet op. De query liep nog steeds erg traag vanuit een opgeslagen procedure.

Ik vond hier nog een antwoord "Parameter Sniffing", Bedankt Omnibuzz. Komt neer op het gebruik van "lokale variabelen" in uw opgeslagen procedure-query's, maar lees het origineel voor meer begrip, het is een geweldige beschrijving. bijv.

Langzame manier:

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

Snelle manier:

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

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Ik hoop dat dit iemand anders helpt, hierdoor verminderde mijn uitvoeringstijd van 5+ minuten tot ongeveer 6-7 seconden.



  1. ORA-24408:kan geen unieke servergroepsnaam genereren

  2. Migreren van Oracle Database naar MariaDB - wat u moet weten

  3. Hoe TABLE af te kappen in Oracle

  4. Automatisch verhogen van de 'id'-waarde bij het invoegen in sqlite