Cursor Verus While Loop - Quais são as vantagens/desvantagens dos cursores?
-
02-07-2019 - |
Pergunta
É uma boa ideia usar o loop em vez de um cursor? Quais são as vantagens/desvantagens dos cursores?
Solução
Alguns deles dependem dos DBMs, mas geralmente:
Prós:
Os loops superem quando se trata de processamento em linha a fila
Funciona razoavelmente bem com conjuntos de dados grandes
Contras:
Não escala também
Use mais recursos do servidor
Aumenta a carga no tempdb
Pode causar vazamentos se usado incorretamente (por exemplo, aberto sem o fechamento correspondente)
Outras dicas
Estou seguindo esse conselho:
...] O que é melhor: cursores ou loops? Novamente, isso realmente depende da sua situação. Eu quase sempre uso um cursor para percorrer os registros quando necessário. O formato do cursor é um pouco mais intuitivo para mim e, como eu apenas uso os construtos para fazer o loop através do conjunto de resultados uma vez, faz sentido usar o cursor fast_forward. Lembre -se de que o tipo de cursor que você usa terá um enorme impacto no desempenho da sua construção de loop.
- Tim Chapman em Comparando Cursor vs. While Loop Performance no SQL Server 2008
O artigo vinculado contém exemplos simples de como implementar cada abordagem.
Eu perguntaria o que você está fazendo com esse cursor/while loop.
Se você estiver atualizando ou retornando dados, por que não usa uma cláusula correta. Conheço pessoas que diriam que você nunca deve usar cursores.