Обновить запрос для одного столбца между двумя огромными таблицами
У меня есть таблица с 58 миллионами записей с 30 столбцами, в которой я хочу обновить один столбец путем сопоставления с другой таблицей, в которой 45 миллионов записей с двумя столбцами.
MERGE INTO /*+ PARALLEL(tbl_temp) */ tbl_temp tcm
USING (SELECT frn.id, frn.risk FROM temp_new frn ) a
ON (a.id = tcm.fi_id) WHEN MATCHED THEN UPDATE
SET tcm.risk_label=a.risk;
выше запрос, который я пробовал, но он занимает более 12 часов. Я пробовал с обновлением партии также с размером партии 10000, но та же проблема. Есть ли другой способ улучшить производительность запроса
1 ответ
Если у вас достаточно свободного места, создайте заново таблицу - создайте новую таблицу с именем temp и такой же структурой, используйте insert как select из текущей таблицы, присоединенной к таблице отображения, используя подсказку параллельного ввода и добавления. Переименуйте текущую таблицу, переименуйте новую таблицу в фактическое имя. Переместите все индексы / синонимы, гранты / триггеры и т. Д. Из старой таблицы в новую. Протестируйте ваше приложение. Если все в порядке, тогда вы можете отказаться от старого.