Это хорошая идея использовать цикл while вместо курсора? Каковы преимущества / недостатки курсоров?
Я следую этому совету:
[...] что лучше: курсоры или Пока петли? Опять же, это действительно зависит на вашей ситуации. Я почти всегда использую курсор для просмотра записей, когда необходимо. Формат курсора немного более интуитивным для меня и, так как я просто использую конструкции для цикл через набор результатов один раз, это имеет смысл использовать FAST_FORWARD курсор. Помните, что тип курсор, который вы используете, будет иметь огромное влияние на производительность вашего цикла построить.
& mdash; Тим Чепмен в Сравнение производительности курсора и цикла WHILE в SQL Server 2008
В связанной статье содержатся простые примеры реализации каждого подхода.
Некоторые из них зависят от СУБД, но обычно:
Плюсы:
Обгоняют циклы, когда дело доходит до построчной обработки
Работает достаточно хорошо с большими наборами данных
Минусы:
Не масштабировать, а также
Использование дополнительных ресурсов сервера
Увеличивает нагрузку на базу данных tempdb
Может привести к утечкам при неправильном использовании (например, «Открыть без соответствующего закрытия»).
Я бы спросил, что вы делаете с этим курсором / циклом while.
Если вы обновляете или возвращаете данные, почему бы вам не использовать правильное предложение WHERE. Я знаю людей, которые говорят, что вы никогда не должны использовать курсоры.
Некоторые недостатки курсоров здесь
Тогда есть также это (На самом деле очень интересная проблема называется - "проблема Хэллоуина")