Я хочу обновить столбец в таблице 2 данными из столбца в таблице 1 на основе сравнения другого столбца в таблице 2 и таблице 1.
Пример.
Я использовал этот скрипт:
DECLARE
TYPE dataRows_t IS TABLE OF table1.tagid%TYPE
INDEX BY PLS_INTEGER;
Tag dataRows_t;
tempTag dataRows_t;
BEGIN
SELECT t1.tagid, t1.tagidB
BULK COLLECT INTO Tag, tempTag
FROM table1 t1;
FORALL indx IN 1 .. Tag.COUNT
UPDATE table2 t2
SET t2.tagid = tag(indx)
WHERE t2.tempTagIdB = temptag(indx);
COMMIT;
END;
, который работает нормально до 40 тыс. Строк (около 3 минут до завершения)
Моя следующая попытка на 60 тыс. Не закончилась через 10 минут.
Я пробовал всего 89 тыс. Строк за 9 часов и не завершил.
Однако, когда я отменил сценарий, я увидел, что значения были обновлены должным образом, но сценарий еще не завершен.
Я знаю, что проверка условия на 89 тыс. строк, вероятно, не самая эффективная, но я не нашел лучшего решения и предположил, что оно завершится в Менее одного часа.
Чего мне не хватает?