Если бы мне пришлось обновлять миллионы записей, я бы, вероятно, выбрал НЕ обновлять.
Я бы скорее создал временную таблицу, а затем вставил данные из старой таблицы , так как вставка не занимает много места для повторного выполнения и занимает меньше времени для отмены.
CREATE TABLE new_table as select <do the update "here"> from old_table;
index new_table
grant on new table
add constraints on new_table
etc on new_table
drop table old_table
rename new_table to old_table;
вы можете сделать это с помощью параллельного запроса, при этом выполнение большинства операций приводит к очень малому количеству повторов и не отменяет вообщеза часть времени, которое потребуется для обновления данных.