Подтвердить что ты не робот

Курсор verus while loop - каковы преимущества/недостатки курсоров?

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

4b9b3361

Ответ 1

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

Плюсы:

  • Превышение циклов при обработке строк за строкой

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

Минусы:

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

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

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

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

Ответ 2

Я следую этому совету:

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

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

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

Ответ 3

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

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

Ответ 4

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

Тогда есть также this (На самом деле очень интересная проблема называется "Проблема Хэллоуина" )