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

Die Abfrage wird schnell ausgeführt, in der gespeicherten Prozedur jedoch langsam

OK, ähnliche Probleme hatten wir schon einmal.

Wir haben dies behoben, indem wir lokale Parameter innerhalb des SP erstellt haben, so dass

DECLARE @LOCAL_Contract_ID int, 
        @LOCAL_dt_From smalldatetime, 
        @LOCAL_dt_To smalldatetime, 
        @LOCAL_Last_Run_Date datetime

SELECT  @LOCAL_Contract_ID = @Contract_ID, 
        @LOCAL_dt_From = @dt_From, 
        @LOCAL_dt_To = @dt_To, 
        @LOCAL_Last_Run_Date = @Last_Run_Date

Wir verwenden dann die lokalen Parameter innerhalb des SP und nicht die übergebenen Parameter.

Dadurch wurde das Problem in der Regel für uns behoben.

Wir glauben, dass dies auf Parameter-Sniffing zurückzuführen ist, haben aber keinen Beweis, sorry ... X-)

BEARBEITEN:

Sehen Sie sich Different Approaches an um das SQL Server-Parameter-Sniffing zu korrigieren für einige aufschlussreiche Beispiele, Erklärungen und Korrekturen.