Я бы применил подход, основанный только на базе данных, если это возможно, и, если не возможно, исключу части, которые будут самыми медленными. Если вы не можете выполнить всю работу в хранимой процедуре, извлеките все записи и внесите изменения.
Следующим шагом является запись изменений в промежуточную таблицу с помощью SQL Bulk Copy. Это быстрая массовая загрузка, которая скопирует тысячи записей в считанные секунды. Вы будете хранить первичный ключ и столбцы для обновления, а также номер партии. Номер партии присваивается каждой партии записей, что позволяет загружать другую партию, не конфликтуя с первой партией.
Используйте хранимую процедуру на сервере для обработки записей партиями по 100 или 1000 в зависимости от производительности. Передайте номер партии в хранимую процедуру.
Мы используем такой метод для загрузки и обновления миллионов записей в пакетном режиме. Наилучшая скорость достигается за счет исключения сети и разрешения серверу базы данных выполнять большую часть работы.
Я надеюсь, что это может дать вам альтернативное решение для оценки.