Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

L'esecuzione di stored procedure da DotNet richiede molto tempo ma in SSMS è immediata

Poiché il mio commento sembrava fornire la risposta corretta, ho deciso di spostarlo in una risposta completa per i posteri nello spirito di stackoverflow.

Il tuo problema sembra essere causato da Parameter Sniffing di SQL Server .Per evitarlo, assegna i valori dei parametri in entrata ad altre variabili dichiarate proprio nella parte superiore del tuo SP.

Vedi questo bell'articolo a riguardo

Esempio:

CREATE PROCEDURE dbo.MyProcedure
(
    @Param1 INT
)
AS

declare @MyParam1 INT
set @MyParam1 = @Param1

SELECT * FROM dbo.MyTable WHERE ColumnName = @MyParam1 

GO

Ho copiato queste informazioni da eggheadcafe.com .

Modifica:secondo il commento di Johann Strydom, ecco un'altra opzione:Ottimizza le query basate su parametri con SQL Server OPTIMIZE FOR Hint .