Почему использование курсоров в SQL Server считается плохой практикой? - PullRequest
57 голосов
/ 12 сентября 2008

Я знал о некоторых причинах производительности еще в SQL 7 дней, но существуют ли такие же проблемы в SQL Server 2005? Если у меня есть набор результатов в хранимой процедуре, на который я хочу действовать индивидуально, курсоры по-прежнему плохой выбор? Если так, то почему?

Ответы [ 11 ]

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

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

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

Циклы - это не то, для чего предназначена архитектура базы данных или хранилища, и даже в SQL Server 2005 вы не достигнете производительности, близкой к вашей, если вы извлечете основные данные, установленные в пользовательскую программу, и выполните зацикливание в памяти, используя максимально легкие объекты данных / структуры.

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