2009-12-18 15 views
8

Ho una query che crea diverse tabelle temporanee e quindi inserisce i dati in esse. Da quello che ho capito, questa è una potenziale causa di Table Spool. Quando guardo il mio piano di esecuzione, la maggior parte del mio trattamento viene speso su Table Spool. Esistono buone tecniche per migliorare questi tipi di problemi di prestazioni? Usare una vista o una CTE mi offrirà qualche vantaggio rispetto alle tabelle temporanee?Eliminazione di Table Spool in SQL Server Piano di esecuzione

Ho anche notato che quando eseguo il mouse su ogni tabella, l'elenco di output proviene dalla stessa tabella temporanea.

risposta

15

Bene, con le informazioni fornite posso solo dire che: Query Optimizer ha scelto il piano migliore possibile. Usa gli spool da tavolo per velocizzare l'esecuzione. Le alternative che non usano le bobine da tavolo sarebbero anche più lente.

Come visualizzare la query, lo schema (i) tabella e la cardinalità e il piano.

Aggiornamento

certamente capire se non ci può mostrare la query. Ma è davvero difficile indovinare perché lo spooling è preceduto dal motore senza conoscere alcun dettaglio. Vi consiglio di andare sul blog di Craig Freedman, è un ingegnere del team di Query Optimizer e ha spiegato molti dei meccanismi interni dell'ottimizzatore SQL 2005/2008. Qui ci sono alcune voci sono riuscito a trovare rapidamente che toccano il tema della spooling in una forma o nell'altra:

SQL team di assistenza clienti ha anche un blog interessante a http://blogs.msdn.com/psssql/
E 'sqltips' (il blog della squadra del motore relazionale) ha alcuni suggerimenti, come Spool operators in query plan...

+0

Purtroppo penso che il mio lavoro non mi piacerebbe che condividessi questo tipo di informazioni. La mia comprensione dello spooling è limitata, ma ho pensato che fosse lo spooling quando si fa riferimento a una tabella temporanea. Non mettere queste informazioni in una vista indicizzata ci allontanerebbe da ciò senza influire negativamente sulle prestazioni? –

Problemi correlati