일반적인 merge 예시 <q1>
<q1>
merge into cutomser t using customer_delta s on (t.cust_id = s.cust_id)
when matched then update
set t.cust_nm = s.cust_nm, t.email = s.email, ...
when not matched then insert
(cust_id,,,, ) values
(s.cust_id,,,,);
</q1>
간혹 merge를 활용해 update(<q2>)를 사용한다.. 그러지 말자.. 불필요한 테이블 접근은 좋지 않다.
update 대상 건수를 쉽게 확인하고자 한다면, <q3>을 활용하는 것을 권장한다.
<q2>
merge into emp t2
using( select t.rowid as rid, s.ename
from emp t, emp_src s
where t.empno = s.empno
and t.ename = s.ename ) s
on (t2.rowid = s.rid)
when matched then update set t2.ename = s.ename;
</q2>
<q3>
update (
select s.ename as s_ename, t.ename as t_ename
from emp t, emp_src s
where t.empno = s.empno
and t.ename <> s.ename
)
set t_ename = s_ename;
</q3>
'IT 기술 > DB 개념' 카테고리의 다른 글
| 파티션을 활용한 대량 DELETE 튜닝 (0) | 2025.04.14 |
|---|---|
| 파티션, 대량 UPDATE 튜닝 (0) | 2025.04.07 |
| 파티션을 활용한 DML 튜닝 (0) | 2025.04.03 |
| Direct Path I/O (0) | 2025.03.29 |
| SQLP 학습 이유 (0) | 2025.03.24 |