Я попытаюсь объяснить свою проблему, так как я не использую SQL напрямую.
Я использую инструмент INFORMATICA с помощью сопоставлений, которые обрабатывают данные SQL, поэтому я попытаюсь объяснить логику, которую моя карта выполняет в SQL.
Моя карта в основном выбирает данные из SCD (медленно меняющееся измерение), где start_date = sysdate и ind = 1 (в этой таблице примерно 600 миллионов записей), используя этот запрос:
SELECT table.ACCOUNT_NUMBER, table.SUB_ACCOUNT_NUMBER, table.SUB_ACCOUNT_KEY
FROM table
WHERE table.CURR_IND=1
AND table.START_DATE=trunc(sysdate)
Эта таблица индексируется следующим образом:
SUB_ACCOUNT_KEY - UNIQUE
Затем добавьте еще один столбец и обновите другую таблицу, содержащую примерно 8 миллионов записей. Запрос этого, вероятно, обновляется с помощью соединения
SET table2.ind =The_New_Column,table_2.sub_account_key = table1.sub_account_key
WHERE Table.account_number = Table_2.account_number
AND table.sub_account_number = table_2.sub_account_number
Эта таблица_2 индексируется следующим образом:
(ACCOUNT_NUMBER, SUB_ACCOUNT_NUMBER) - UNIQUE
И выбор, и обновление требуют некоторого времени для обработки в зависимости от объема данных, которые я получаю каждый день (у нас есть 1 день каждые три месяца, когда объем данных составляет около X30 обычного дня, что занимает вечность... около 2 часов)
Итак, мой вопрос: как я могу ускорить этот процесс, имея следующее ограничение:
Я не могу (без веской причины) добавить индекс к таблицам, так как он используется во многих других процессах и может снизить их производительность