С точки зрения производительности, создание трех коллекций и попадание в базу данных только один раз будет более производительным за счет использования большего количества памяти.
Таким образом, ответ зависит от типичного объема, который вы будете обрабатывать, и доступной памяти. .
Вы также можете иметь четвертую коллекцию, которая остается пустой, и назначить пустую коллекцию dsa1, dsa2 и dsa3 в l oop вместо удаления записей.
Но, глядя на ваш код, так как меняется только статус, почему бы не создать коллекцию на основе записи элемента и статуса или иметь вторую коллекцию для хранения статуса, а затем независимо от статуса, вы будете обновлять 1000 записей одновременно с одной коллекцией.
И еще один шаг, поскольку 1M записей - это ничто для базы данных oracle (миллиарды записей огромны, миллион записей тривиальны), просто используйте базу данных для выполнения одного оператора select update
update table2 t2
set conn=(select decode(t1.status, 'ACT', 'ACTIVE', 'NOT ACT','NON ACTIVE','DEAD')
from table1 t1)
where t2.id=t1.id
NB строк в t2, которые не существуют в t1, будут иметь conn se т до нуля, но вы можете ограничить, где пункты, чтобы ограничить влияние, если это не желательно.
вы также можете добавить параллельный совет как для обновления, так и для выбора, чтобы использовать больше процессоров, и если вы можете изменить Модель данных, использующая код цифры c вместо varchar для представления статуса, также будет более эффективной.