1

In einem SP1 verwendete ich 7 @Table Variablen und in einem anderen SP2 ich 7 #Temp Tabellen verwendet. Beide SPs verwenden dieselben Tabellen. Aber SP1 benötigt mehr Zeit für die Ausführung als SP2. Kann jemand eine klare Erklärung geben?Warum Tablle Variable gespeicherte Prozedur mehr Zeit zur Ausführung als temporäre Tabellen gespeicherte Prozedur

+0

Tabellenvariable wird nicht vorgeschlagen verwenden holen, wenn sie mit großer Anzahl von Zeilen handeln. SQL Server erwartet immer, dass die Tabellenvariable nur eine Zeile hat, was, wenn die Tabelle eine große Anzahl von Zeilen enthält, den generierten Ausführungsplan durcheinander bringt. [** Dies **] (http://stackoverflow.com/questions/11857789/when-should-i-use-a-table-vary-vs-memory-table-in-sql-server) könnte helfen. –

Antwort

0

Tabelle Variable ist nur für eine kleine Menge von Daten zu halten (Statistiken werden auf sie nicht angewandt)

Temp-Tabelle kann viel größer halten und schneller (aber nicht geeignet für sehr, sehr großen Datensatz, wie es IO verwendet Operationen auf der Festplatte)

wenn man diese für Paging verwenden, nächste Zeilen Verfahren oder eine Gruppe von (generieren Zeilennummer), dann Filtern die Zeilennummer