나는 아래의 질문을 가지고 그것을 조정할 더 좋은 방법이 있는지 알고 싶습니까?이 쿼리를 튜닝하는 더 좋은 방법이 있습니까?
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 ... union ... select' 대신에 'distinct select'를 사용하는 이유는 무엇입니까? 간단히 말해, 문맥이없는 짧은 코드에서 우리를 추측하는 대신 비즈니스 규칙을 설명하십시오. – APC
튜닝은 모두 세부 사항입니다. 어떤 오라클 버전입니까? 모든 teh 테이블에 몇 개의 행이 있습니까? USING 결과 집합에 몇 행이 있습니까? 얼마나 많은 행이 업데이트됩니까? 얼마나 시간이 걸려요? 얼마나 빨리 실행하고 싶습니까? 설명 계획은 뭐니? 색인이 생성되는 열은 무엇입니까? – APC