Como meu comentário parecia fornecer a resposta correta, decidi movê-lo para uma resposta completa para a posteridade no espírito do stackoverflow.
Seu problema parece ser causado pelo do SQL Server .Para evitar isso, apenas atribua seus valores de parâmetro de entrada para outras variáveis declaradas bem no topo do seu SP.
Veja este belo artigo sobre isso
Exemplo:
CREATE PROCEDURE dbo.MyProcedure
(
@Param1 INT
)
AS
declare @MyParam1 INT
set @MyParam1 = @Param1
SELECT * FROM dbo.MyTable WHERE ColumnName = @MyParam1
GO
Copiei essas informações de eggheadcafe.com .
Editar:de acordo com o comentário de Johann Strydom, aqui está outra opção:Otimizar consultas orientadas por parâmetros com SQL Server OPTIMIZE FOR Hint .