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

Alternative zur Verwendung lokaler Variablen in einer where-Klausel

Verwenden von lokalen Variablen bei WHERE filter bewirkt FULL TABLE SCAN. Weil SS die Werte der lokalen Variablen zur Kompilierzeit nicht kennt. Es erstellt also einen Ausführungsplan für den größten Maßstab, der für die Spalte verfügbar sein kann.

Um das Leistungsproblem zu vermeiden, muss SS die Werte der Variablen zur Kompilierzeit kennen. Einen SP definieren und diese lokalen Variablen als Parameter übergeben ist eine der Lösungen des Problems. Eine andere Lösung ist die Verwendung von sp_executesql und diese lokalen Variablen erneut als Parameter übergeben...

Oder Sie können OPTION ( RECOMPILE ) hinzufügen am Ende Ihrer SQL-Anweisung, damit Ihre lokalen Variablen kompiliert werden. Dadurch wird das Performans-Problem gelöst.