/ / Tabellenspool im SQL Server-Ausführungsplan - SQL-Server

Tabellenspool in SQL Server-Ausführungsplan - sql-server

Ist es wirklich schlimm, "Table Spool" im SQL Server-Ausführungsplan zu erhalten? Wenn nicht wie ist es vorteilhaft? Suchen wir wirklich, um Table Spool loszuwerden?

Antworten:

1 für die Antwort № 1

Gemäß MSDN:

Der logische Operator von Lazy Spool speichert jede Zeilevon seiner Eingabe in a verstecktes temporäres Objekt, das in der Tempdb-Datenbank gespeichert ist. Wenn der Betreiber wird zurückgespult (z. B. von einem Nested-Loops-Operator), jedoch nicht erneut gebunden benötigt wird, werden die gespoolten Daten verwendet, anstatt die Eingabe erneut zu scannen. Wenn ein erneutes Binden erforderlich ist, werden die gespoolten Daten und die Spool verworfen Das Objekt wird durch erneutes Scannen der (Rebound-) Eingabe neu erstellt.

Es ist immer besser, keinen Operator zu haben, als einen zu haben. Die Vorteile sind oben beschrieben (kein erneutes Scannen). Nachteil ist, dass Zeilen in tempdb gespeichert werden müssen.

Normalerweise ist es nicht schlecht, diesen Operator zu haben, es sei denn, alles passt in den Arbeitsspeicher. Sie müssen den Ausführungsplan bzw. die Ausführungsabfrage teilen, um Erklärungen und mögliche Verbesserungen zu erhalten.