수정 가능 조인 뷰 활용 

 - 먼저 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 이 있다. 

+ Recent posts