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