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

Gespeicherte Prozedur, die Zeit für die Ausführung benötigt

Sieht aus wie Parameter-Sniffing.

Hier ist eine nette Erklärung:Ich rieche einen Parameter!

Grundsätzlich hat SQL Server einen Abfrageausführungsplan für die Parameter, mit denen er zuerst ausgeführt wurde, zwischengespeichert, sodass der Plan für die neuen Werte, die Sie übergeben, nicht optimal ist. Wenn Sie die Abfrage direkt ausführen, wird der Plan in diesem Moment generiert, deshalb ist es schnell.

Mit können Sie den Vorgang für die Neukompilierung manuell markieren sp_recompile oder verwenden Sie die Option With Recompile in seiner Definition, damit es bei jedem Lauf kompiliert wird.