У меня есть хранимая процедура, которая работает с таблицей, содержащей поле xml, и использую курсор, чтобы зациклить их и запустить некоторые другие sp. Строк может быть много, а документы довольно большие. Там были некоторые признаки хранимого удушья под нагрузкой.
Мне интересно, возможно ли это, потому что, как работают курсоры, возможно, использование курсора означает, что он сохраняет весь набор результатов в памяти. Я мысленно каким-то образом всегда представляю себе курсоры, например, циклы по таблице, в то время как, возможно, это больше похоже на выбор данных из таблицы, сохранение их в памяти и последующее циклирование по ним. Как работают курсоры?
PS. Лично я ненавижу курсоры как с точки зрения производительности, так и идеологии (SQL должен быть основан на основе) и избегаю их, как чумы. Это был случай унаследованного кода, который я сейчас преобразовал, чтобы использовать временную таблицу, но мне все еще любопытно DS.