수정 가능 조인 뷰 활용
- 먼저 set 절에 여러 컬럼들은 해당 컬럼들이 한 테이블에 있는 컬럼들이라면 (,) 로 연결 하여
서브쿼리 사용 시 테이블을 한 번만 읽어서 쿼리 할 수 있다.
- 또한 update 해야 하는 테이블은 총 고객 수가 아주 많다면 exists 서브쿼리를 통해
해시 세미 조인으로 유도하는 것을 고려할 수 있다.
- set 절에 사용된 서브쿼리에는 캐싱 매커니즘이 작용하므로 distinct value 개수가 적은
1쪽 집합을 읽어 M쪽 집합을 갱신할 때 효과적이다.
(즉 update 해야 할 테이블 M , 읽어야 할 테이블 1 일때 )
(물론 exists 서브쿼리가 NL 세미 조인이나 필터방식으로 처리된다면 거기서도 캐싱 효과가
나타난다. )
수정 가능 조인 뷰
- 수정 가능 조인 뷰를 활용하면 참조 테이블과 두 번 조인하는 비효율을 없앨 수 있다.
- '조인 뷰'는 from 절에 두 개 이상 테이브을 가진 뷰를 가리킨다.
- '수정 가능 조인 뷰' 는 말 그대로 입력, 수정, 삭제가 허용되는 조인 뷰를 말한다.
- 단, 1쪽 집합과 조인되는 M쪽 집합에만 입력, 수정, 삭제가 허용된다.
- 1쪽 집합에 PK 제약을 설정하거나 Unique 인덱스를 생성해야 수정 가능 조인 뷰를 통한
입력/수정/삭제가 가능해진다.
- PK 제약을 설정하면 M쪽 집합은 '키-보존 테이블'이 되고, dept 테이블은 '비 키-보존 테이블'로
남는다.
키 보존 테이블이란
- 조인된 결과집합을 통해서도 중복 값 없이 Unique하게 식별이 가능한 테이블
- 단적으로 말해 '키 보존 테이블'이란, 뷰에 rowid를 제공하는 테이블
- *_UPDATABLE_COLUMNS 뷰를 통해 키 보존 테이블이 컬럼인지 아닌지 쉽게 확인할 수 있다.
수정가능 조인 뷰 제약 회피
- bypass_ujvc 힌트는 키 보본 테이블이 없더라도 update 수행이 가능하게 하는 힌트
- update를 위해 참조하는 집합에 중복 레코드가 없을 때만 이 힌트를 사용해야 한다.
Merge문 활용
- DW에서 가장 흔히 발생하는 오퍼레이션은, 기간계 시스템에서 가져온 신규 트랜잭션
테이터를 반영함으로써 두 시스템 간 데이터를 동기화시키는 작업
- bypass_ujvc 힌트가 필요할 때 아래와 같이 merge문으로 처리를 할 수도 있다.
- when not matched then 구문은 when matched then 에 해당 하지 않으며
있을 시 where 절에도 해당 하는 row들이 적용 된다.
- delete 절은 when matched then 절에서만 사용할 수 있다.
( 또한 , update를 한 결과물로 제한이 되어서 실행 된다. )
다중 테이블 insert 활용
- 큰 테이블을 읽어서 여러 테이블에 insert 해야 할 때 큰 테이블을 한 번만 읽어서
여러 테이블에 insert를 효율적으로 할 수 있게 하는 기능
- insert first, insert all 이 있다.
'ORACLE > SQLP' 카테고리의 다른 글
성능고도화 3-1. 옵티마이저 (0) | 2016.12.26 |
---|---|
성능도고화 2-8. 고급 조인 테크닉 (0) | 2016.12.26 |
성능고도화 2-6. 스칼라 서브쿼리르 이용한 조인 (0) | 2016.12.26 |
성능고도화 2-5. outer 조인 (0) | 2016.12.26 |
성능고도화 2-4. 조인 순서의 중요성 (0) | 2016.12.26 |