Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Por que é considerado uma prática ruim usar cursores no SQL Server?


Porque os cursores ocupam memória e criam bloqueios.

O que você está realmente fazendo é tentar forçar a tecnologia baseada em conjuntos para uma funcionalidade não baseada em conjuntos. E, com toda a justiça, devo salientar que os cursores fazem têm um uso, mas eles são desaprovados porque muitas pessoas que não estão acostumadas a usar soluções baseadas em conjuntos usam cursores em vez de descobrir a solução baseada em conjuntos.

Mas, quando você abre um cursor, você está basicamente carregando essas linhas na memória e bloqueando-as, criando blocos em potencial. Então, ao percorrer o cursor, você está fazendo alterações em outras tabelas e ainda mantendo toda a memória e bloqueios do cursor abertos.

Tudo isso tem o potencial de causar problemas de desempenho para outros usuários.

Portanto, como regra geral, os cursores são desaprovados. Especialmente se essa for a primeira solução encontrada para resolver um problema.