문제 링크 : https://velog.io/@yooha9621/SQLP실기문제-대용량배치프로그램튜닝52번
SQL > ALTER SESSION ENABLE PARALLEL DML;
UPDATE /*+ PARALLEL (주문 4) */ 주문
SET 주문일련번호
주문일련번호 = ROWNUM
WHERE 주문일자 = TO_CHAR(SYSDATE, 'YYYYMMDD');
SQL > MERGE INTO 주문 T1
USING ( SELECT 고객번호 , 주문순번
,ROW_NUMBER() OVER ( ORDER BY 고객번호 , 주문순번 ) AS 주문일련번호
FROM 주문
WHERE 주문일자 = TO_CHAR(SYSDATE, 'YYYYMMDD') ) T2
ON ( T1.주문일자 = TO_CHAR(SYSDATE, 'YYYYMMDD')
AND T1.고객번호 = T2.고객번호
AND T1.주문순번 = T2.주문순번 )
WHEN MATCHED THEN UPDATE
SET T1.주문일련번호 = T2.주문일련번호;
🍎 정리
- ROWNUM이 아닌 ROW_NUMBER()을 사용해 일련번호를 부여하여 QC가 Unique 처리를 하는 과정을 생략한다.