Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

L'exécution de la procédure stockée à partir de DotNet prend très longtemps, mais dans SSMS, elle est immédiate

É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 .