Сохраненная процедура 1 имеет выборный запрос, возвращающий набор записей, конкретные даты. Я использую курсор для прохождения этого набора записей, и для каждой строки вызывается другая хранимая процедура.Альтернатива курсора для операции с строкой за строкой
Сохраненная процедура 2 вставляет около 20 тыс. Строк в таблицу для каждого значения из курсора.
Поскольку в курсоре содержится около 100 записей, общее количество вставленных строк составляет 200 КБ, что заставляет запрос работать в течение нескольких дней, пока он не будет остановлен в процессе производства.
Тот же запрос занимает около 8 минут в dev.
Я попытался использовать контейнер foreach в SSIS (dev), и это занимает 5 минут (dev).
Есть ли более быстрый способ вставки этих записей?
Я рассмотрел использование функции с табличной оценкой, но объединение между ними трудно, учитывая, что первый набор записей содержит только даты.
Является ли количество данных одинаковым в производстве и dev? Если да, то почему он медленнее? –
Вставка строк 200k, даже внутри курсора, не должна занимать несколько дней. –
Вы свидетельствуете о той же производительности в производственной системе, даже когда существует почти нулевое использование системы? –