У меня есть две большие таблицы (~ 40M строк каждая) в Oracle.Мне нужно обновить таблицу A с данными из таблицы B на основе одного соединения.Я пробовал:
update tableA a
set (a.column2)=
(select b.column2 from tableB b
where a.column1=b.column1)
Это работает, но занимает около 1 часа.
Я также проверил следующее (объясните план):
merge into tableA a
using (select b.column1, b.column2 from tableB b) b
on (a.column1=b.column1)
when matched then
update set a.column2=b.column2
Но его стоимость, кажется, в 10 раз превышает стоимость первого запроса.Я также пытался обновить с помощью курсора, но это заняло 2 часа.
Обе таблицы имеют индекс для column1.Таблица A также имеет разделы на ежемесячной основе.
Есть идеи, как сделать этот процесс более эффективным?
Спасибо!