Ponieważ mój komentarz wydawał się dostarczać poprawnej odpowiedzi, postanowiłem przenieść go do pełnej odpowiedzi dla potomnych w duchu stackoverflow.
Wygląda na to, że Twój problem jest spowodowany Parameter Sniffing przez SQL Server .Aby temu zapobiec, po prostu przypisz przychodzące wartości parametrów do innych zmiennych zadeklarowanych w górnej części Twojego SP.
Zobacz ten fajny artykuł na ten temat
Przykład:
CREATE PROCEDURE dbo.MyProcedure
(
@Param1 INT
)
AS
declare @MyParam1 INT
set @MyParam1 = @Param1
SELECT * FROM dbo.MyTable WHERE ColumnName = @MyParam1
GO
Skopiowałem te informacje z kawiarnia jajeczna.com .
Edycja:zgodnie z komentarzem Johanna Strydoma, oto kolejna opcja:Optymalizuj zapytania oparte na parametrach za pomocą SQL Server OPTYMALIZUJ PODPOWIEDŹ .