Realmente não há muito a ser feito aqui, além de (a) aumentar sua RAM disponível ou (b) diminuir o tamanho da consulta. Se tudo isso está acontecendo dentro de uma grande transação gigante, você pode realmente estar em um mundo de dor, especialmente se os conjuntos de dados que estão sendo alterados forem grandes (muitas colunas, BLOBs, etc.).
Isso soa como um caso em que você precisa se sentar com seu cliente e discutir alternativas para reduzir os conjuntos de alterações que você está carregando - talvez uma atualização mensal / semanal / diária em vez de a cada 2-3 meses?