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.