Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:Szybkie zapytania, ale wolne od procedury

Miałem ten sam problem, co oryginalny plakat, ale przytoczona odpowiedź nie rozwiązała problemu dla mnie. Zapytanie z procedury składowanej nadal działało bardzo wolno.

Znalazłem tu inną odpowiedź "Parameter Sniffing", Dzięki Omnibuzz. Sprowadza się do używania „zmiennych lokalnych” w zapytaniach procedur składowanych, ale przeczytaj oryginał, aby uzyskać więcej informacji, to świetny opis. np.

Wolny sposób:

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

Szybki sposób:

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

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Mam nadzieję, że to pomoże komuś innemu, ponieważ dzięki temu skróciłem czas wykonania z ponad 5 minut do około 6-7 sekund.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podczas wykonywania procedury składowanej, jaka jest korzyść z używania CommandType.StoredProcedure w porównaniu z używaniem CommandType.Text?

  2. Jak podzielić wartość oddzieloną przecinkami na kolumny?

  3. Jakie są główne różnice w wydajności między typami danych varchar i nvarchar SQL Server?

  4. Dlaczego moje lewe złącze t-sql nie działa?

  5. Jak zainstalować SQL Server Manager Studio (SSMS) — samouczek SQL Server / TSQL, część 1