Плюсы и минусы использования курсора (в SQL-сервере)

Я задал здесь вопрос Использование курсора в базах данных OLTP (SQL-сервер)

, где люди ответили, что курсоры никогда не должны использоваться .

Я считаю, что курсоры - очень мощные инструменты, которые предназначены для использования (я не думаю, что Microsoft поддерживает курсоры для плохих разработчиков). Предположим, у вас есть таблица, в которой значение столбца в строке зависит от значения из того же столбца в предыдущей строке. Если это однократный внутренний процесс, не думаете ли вы, что использование курсора было бы приемлемым выбором?

Внезапно я могу придумать пару сценариев где, как я считаю, не должно быть ничего постыдного в использовании курсоров. Пожалуйста, дайте мне знать, если вы считаете иначе.

1> Одноразовый внутренний процесс для очистки плохих данных, который завершается в течение нескольких минут. 2> Пакетные процессы, которые запускаются один раз в течение длительного периода времени (что-то вроде одного раза в год). Если в приведенных выше сценариях нет видимой нагрузки на другие процессы, не будет ли неразумным тратить дополнительные часы на написание кода, чтобы избежать курсоров? Другими словами, в некоторых случаях время разработчика более важно, чем производительность процесса, который почти не влияет ни на что другое.

На мой взгляд, в этих сценариях следует серьезно избегать использования курсора. 1> Сохраненная процедура, вызываемая с веб-сайта, которую можно вызывать очень часто.2> Задание SQL, которое будет выполняться несколько раз в день и потреблять много ресурсов.

Я считаю очень поверхностным делать общее заявление типа «курсоры никогда не следует использовать» без анализа поставленной задачи и фактического сопоставления ее с альтернативами.

Пожалуйста, дайте мне знать о ваших мыслях.

7
задан Community 23 May 2017 в 12:01
поделиться