Étant donné que mon commentaire semblait fournir la bonne réponse, j'ai décidé de le déplacer dans une réponse complète pour la postérité dans l'esprit de stackoverflow.
Votre problème semble être causé par Parameter Sniffing de SQL Server .Pour éviter cela, affectez simplement vos valeurs de paramètres entrants à d'autres variables déclarées tout en haut de votre SP.
Voir ce bel article à ce sujet
Exemple :
CREATE PROCEDURE dbo.MyProcedure
(
@Param1 INT
)
AS
declare @MyParam1 INT
set @MyParam1 = @Param1
SELECT * FROM dbo.MyTable WHERE ColumnName = @MyParam1
GO
J'ai copié ces informations de eggheadcafe.com .
Edit :selon le commentaire de Johann Strydom, voici une autre option :Optimiser les requêtes basées sur des paramètres avec SQL Server OPTIMIZE FOR Hint .