Курсор verus while loop - каковы преимущества / недостатки курсоров? - PullRequest
21 голосов
/ 26 сентября 2008

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

Ответы [ 4 ]

10 голосов
/ 13 января 2011

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

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

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

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

10 голосов
/ 26 сентября 2008

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

Плюсы:

  • Обгоняют циклы, когда дело доходит до построчной обработки

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

Минусы:

  • Не масштабировать, а также

  • Использование дополнительных ресурсов сервера

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

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

1 голос
/ 26 сентября 2008

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

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

0 голосов
/ 26 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...