Cursor verus while loop - quali sono i vantaggi / gli svantaggi dei cursori?
-
02-07-2019 - |
Domanda
È una buona idea usare while loop anziché un cursore? Quali sono i vantaggi / gli svantaggi dei cursori?
Soluzione
Alcuni di questi dipendono dal DBMS, ma generalmente:
Pro:
-
Supera i cicli quando si tratta dell'elaborazione riga per riga
-
Funziona abbastanza bene con set di dati di grandi dimensioni
Contro:
-
Non ridimensionare troppo
-
Utilizza più risorse del server
-
Aumenta il carico su tempdb
-
Può causare perdite se usato in modo errato (es. Apri senza corrispondente chiusura)
Altri suggerimenti
Sto seguendo questo piccolo consiglio:
[...] che è meglio: cursori o DURANTE i loop? Ancora una volta, dipende davvero sulla tua situazione. Uso quasi sempre un cursore per scorrere tra i record quando necessario. Il formato del cursore è a un po 'più intuitivo per me e, dato che uso solo i costrutti per scorrere una volta il set di risultati ha senso usare FAST_FORWARD cursore. Ricorda che il tipo di il cursore che usi avrà un impatto enorme sulle prestazioni del tuo loop costruire.
- Tim Chapman in Confronto delle prestazioni del cursore con il ciclo WHILE in SQL Server 2008
L'articolo collegato contiene semplici esempi su come implementare ciascun approccio.
Ti chiederei cosa stai facendo con quel cursore / ciclo while.
Se stai aggiornando o restituendo dati, perché non usi una clausola WHERE corretta. Conosco persone che direbbero che non dovresti mai usare i cursori.