Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Das Ausführen gespeicherter Prozesse von DotNet dauert sehr lange, aber in SSMS ist es sofort

Da mein Kommentar die richtige Antwort zu liefern schien, beschloss ich, ihn im Sinne des Stapelüberlaufs in eine vollständige Antwort für die Nachwelt zu verschieben.

Ihr Problem scheint durch das Parameter Sniffing von SQL Server verursacht zu werden .Um dies zu verhindern, weisen Sie einfach Ihre eingehenden Parameterwerte anderen Variablen zu, die ganz oben in Ihrem SP deklariert sind.

Siehe diesen netten Artikel darüber

Beispiel:

CREATE PROCEDURE dbo.MyProcedure
(
    @Param1 INT
)
AS

declare @MyParam1 INT
set @MyParam1 = @Param1

SELECT * FROM dbo.MyTable WHERE ColumnName = @MyParam1 

GO

Ich habe diese Informationen von eggheadcafe.com .

Bearbeiten:Gemäß dem Kommentar von Johann Strydom ist hier eine weitere Option:Parametergesteuerte Abfragen mit SQL Server OPTIMIZE FOR Hint optimieren .