Cursor Verus While Loop - Quais são as vantagens/desvantagens dos cursores?

StackOverflow https://stackoverflow.com/questions/139843

  •  02-07-2019
  •  | 
  •  

Pergunta

É uma boa ideia usar o loop em vez de um cursor? Quais são as vantagens/desvantagens dos cursores?

Foi útil?

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.

Algumas desvantagens dos cursores são aqui

Então há também isto (Na verdade, um problema muito interessante chamado - "Problema do Halloween")

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top