Курсор в цикле while – каковы преимущества/недостатки курсоров?

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

  •  02-07-2019
  •  | 
  •  

Вопрос

Хорошая ли идея использовать цикл while вместо курсора?Каковы преимущества/недостатки курсоров?

Это было полезно?

Решение

Некоторые из них зависят от СУБД, но в целом:

Плюсы:

  • Превосходство циклов при построчной обработке

  • Достаточно хорошо работает с большими наборами данных

Минусы:

  • Не масштабируйте также

  • Используйте больше ресурсов сервера

  • Увеличивает нагрузку на tempdb

  • Может вызвать утечку при неправильном использовании (например.Открыть без соответствующего закрытия)

Другие советы

Я следую этому небольшому совету:

[...] как лучше:курсоры или во время петли?Опять же, это действительно зависит от вашей ситуации.Я почти всегда использую курсор, чтобы пройти через записи, когда это необходимо.Формат курсора немного более интуитивно понятен для меня, и, поскольку я просто использую конструкции, чтобы пройти через набор результатов один раз, имеет смысл использовать курсор FAST_FORWARD.Помните, что тип курсора, который вы используете, окажет огромное влияние на производительность вашей петлевой конструкции.

— Тим Чепмен в Сравнение курсора иПроизводительность цикла WHILE в SQL Server 2008

Связанная статья содержит простые примеры реализации каждого подхода.

Я хотел бы спросить вас, что вы делаете с этим циклом курсора/пока.

Если вы обновляете или возвращаете данные, почему бы вам не использовать правильное предложение WHERE.Я знаю людей, которые говорят, что никогда не следует использовать курсоры.

Некоторые недостатки курсоров: здесь

Тогда есть еще этот (На самом деле очень интересная задача под названием - «Задача Хэллоуина»)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top