Domanda

È una buona idea usare while loop anziché un cursore? Quali sono i vantaggi / gli svantaggi dei cursori?

È stato utile?

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.

Alcuni svantaggi dei cursori sono qui

Poi c'è anche questo (In realtà un problema molto interessante chiamato - " Problema di Halloween ")

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top