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