2010-12-31 15 views
15

Nelle stored procedure di SQL Server quando utilizzare tabelle temporanee e quando utilizzare i cursori. qual è la migliore opzione per le prestazioni?Tabelle temporanee del server SQL vs cursori

+0

Né se si può farne a meno. SQL è basato su SET e generalmente può gestire le situazioni in cui si utilizzano più le tabelle temporanee e/oi cursori. –

+1

Perché non CTE? http://msdn.microsoft.com/en-us/library/ms175972.aspx –

+1

Puoi chiarire un po 'qui? Usare tabelle temporanee o usare cursori è un po 'come mele e arance. Le tabelle temporanee rispetto alle variabili di tabella sarebbero un confronto più appropriato. – tcnolan

risposta

18

Se possibile, evitare i cursori come la peste. SQL Server è basato su set - tutto ciò che devi fare in un modo RBAR (row-by-agonizing-row) sarà lento, lento e va contro i principi di base di come funziona SQL.

La tua domanda è molto vaga - sulla base di tali informazioni, non possiamo davvero dire cosa stai cercando di fare. Ma la raccomandazione principale rimane: quando possibile (ed è possibile nella maggior parte dei casi), utilizzare le operazioni basate su set - SELECT, UPDATE, INSERT e join - non forzare il tuo modo di pensare procedurale su SQL Server - questo non è il modo migliore.

Quindi, se è possibile utilizzare le operazioni basate su set per riempire e utilizzare le tabelle temporanee, preferirei quel metodo sui cursori ogni volta.

7

I cursori funzionano fila per fila e sono estremamente scarsi. In quasi tutti i casi, possono essere sostituiti da un codice migliore basato su set (non normalmente tabelle temporanee)

Le tabelle temporali possono essere fini o meno a seconda dell'importo dei dati e di ciò che si sta facendo con essi. In genere non sostituiscono un cursore.

consiglio di leggere questo: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them

Problemi correlati