Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Perché è considerato una cattiva pratica utilizzare i cursori in SQL Server?

Perché i cursori occupano memoria e creano blocchi.

Quello che stai veramente facendo è tentare di forzare la tecnologia basata su set in funzionalità non basate su set. E, in tutta franchezza, dovrei sottolineare che i cursori lo fanno hanno un uso, ma sono disapprovati perché molte persone che non sono abituate a utilizzare soluzioni basate su insiemi usano i cursori invece di capire la soluzione basata su insiemi.

Ma, quando apri un cursore, stai fondamentalmente caricando quelle righe in memoria e bloccandole, creando potenziali blocchi. Quindi, mentre scorri il cursore, apporti modifiche ad altre tabelle e mantieni aperta tutta la memoria e i blocchi del cursore.

Tutto ciò può potenzialmente causare problemi di prestazioni ad altri utenti.

Quindi, come regola generale, i cursori sono disapprovati. Soprattutto se questa è la prima soluzione a cui si arriva per risolvere un problema.