È 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 № 1Secondo 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.