У меня есть запрос ниже и хотел бы знать, есть ли лучший способ его настроить?Есть ли лучший способ настроить этот запрос?
MERGE INTO target_table TARGET USING
(SELECT DISTINCT g1.column_name
FROM test_gtt1 g1,
test_gtt2 g2
WHERE g1.column_name = g2.column_name
AND g1.diff_id IS NULL
AND g2.diff_id IS NULL
UNION ALL
SELECT DISTINCT g1.column_name
FROM test_gtt1 g1,
test_gtt2 g2
WHERE
g1.column_name = g2.column_name
AND g1.diff_id = g2.diff_id
AND g1.diff_id IS NOT NULL
AND g2.diff_id IS NOT NULL
) SOURCE ON (TARGET.column_name = SOURCE.column_name)
WHEN MATCHED THEN
UPDATE SET TARGET.column_name2 = 123;
Вашей логика очень смущенно. Например, зачем использовать 'select distinct ... union all ... select different' вместо 'select ... union ... select'? Короче говоря, пожалуйста, объясните свои бизнес-правила, вместо того, чтобы заставлять нас угадывать тогда из шонки кода без контекста. – APC
Тюнинг - это все подробности. Какая версия Oracle? Сколько строк во всех таблицах? Сколько строк в наборе результатов USING? Сколько строк обновляется? Сколько времени это занимает? Как быстро вы хотите его запустить? Каков план объяснений? Какие столбцы индексируются? – APC