/ / Table Spool nel piano di esecuzione di SQL Server - sql-server

Spool di tabella nel piano di esecuzione di SQL Server - sql-server

È davvero brutto avere "Table spool" nel piano di esecuzione del server SQL? Se non come è vantaggioso? Cerchiamo davvero di sbarazzarci di Table Spool?

risposte:

1 per risposta № 1

Secondo MSDN:

L'operatore logico Lazy Spool memorizza ogni rigadal suo input in a oggetto temporaneo nascosto archiviato nel database tempdb. Se l'operatore viene riavvolto (ad esempio, da un operatore Nested Loops) ma non viene eseguito nuovamente è necessario, i dati di spool sono usati invece di riscansionare l'input. Se è necessario il rebinding, i dati di spool sono scartati e lo spool l'oggetto viene ricostruito rianalizzando l'input (rimbalzo).

È sempre meglio non avere un operatore che averne uno: i vantaggi sono descritti sopra (nessuna scansione). Lo svantaggio è che le righe devono essere memorizzate in tempdb (di solito si adatta alla memoria per un accesso più rapido).

Di solito non è male avere questo operatore a meno che tutto non si adatti alla memoria. È necessario condividere piano / query di esecuzione per ulteriori spiegazioni dati e possibili modifiche.