Я хочу обновить таблицу базы данных, которая содержит более 10 миллионов записей из временной таблицы.Но мой запрос на обновление выполняется более 4 дней.
1.) Я уже создал индекс для обновления критериев поиска для tax_ledger_item_tab.индекс создан на party_type, личность, компания.Мои критерии поиска: party_type, identity, company, delivery_type_id в качестве следующего заданного запроса, эти столбцы не являются ключами в таблице.
Я считаю, что не могу добавить delivery_type_id для индекса, поскольку он будет обновляться запросом., если я добавлю, что в индекс производительность будет наихудшей.
2.) временная таблица identity_invoice_info_cfv также вернет также 70000 записей.
Пока я считаю, что стоимость моего плана выполнения обновления будет примерно равна70000 * 10 миллионов записей.
Как повысить производительность с помощью следующего запроса на обновление?Я только хочу обновить delivery_type_id, только извлеченные столбцы.
DECLARE
CURSOR get_records IS
SELECT i.COMPANY, i.IDENTITY, i.CF$_DELIVERY_TYPE
FROM identity_invoice_info_cfv i
WHERE i.PARTY_TYPE_DB = 'CUSTOMER';
BEGIN
FOR rec_ IN get_records LOOP
dbms_output.put_line (sysdate );
UPDATE tax_ledger_item_tab t
SET t.delivery_type_id = rec_.CF$_DELIVERY_TYPE, t.fetched = 'TRUE'
WHERE t.party_type = 'CUSTOMER'
AND t.identity = rec_.IDENTITY
AND t.company = rec_.COMPANY
AND t.delivery_type_id IS NULL;
COMMIT;
END LOOP;
END;