Outer NL 조인 

 - Outer 기호(+)가 붙지 않은 테이블이 항상 드라이빙 테이블로 선택된다. 

    ( (+)가 붙은 쪽이 나머지를 null로 붙인다고 생각하면 편하다. ) 

 - outer 조인은 ERD 관계와 연관이 많기 때문에 ERD 표기법에 대한 이해가 필수이다. 

   ( ERD 표기법은 데이버베이스 프로그래머에게는 필수이기는 한다. ) 

   ( 엔터티 간 관계를 해석할 때도 카디널리티만 보지 말고 Optionality를 반드시 따져봐야한다. ) 

 - 혹시 있을지 모를 null 값을 두려워해 습관적으로 Outer 기호(+)를 붙인다면 성능상 

    불이익이 생길 수 있다. 


Outer 소트 머지 조인 

 - Outer 소트 머지 조인도 처리 방향이 한쪽으로 고정된다. 


Outer 해시 조인 

 - 9i에서 Outer 해시 조인을 수행해 보면, Outer 기호(+)가 붙지 않은 테이블이 항상 

     Build Input으로 선택된다. 

 - 해시 조인은 10g 부터 swap_join_input 힌트를 통해서 outer 조인의 순서 변경이 가능하다. 


9i 이전 버전에서 Outer 해시 조인 튜닝 

 - 테이블을 2번 사용하여 한 번은 최소한의 상태로 hash 조인 하고 조인 후 build input을 

     줄인 상태에서 한번 더 hash_join을 한다. 

 - 구간을 나눠 쿼리를 여러번 수행하는 방법도 생각해볼 수 있음 

   ( 해시 버킷당 엔트리 개수를 최소화 하면, 고객 테이브을 반복적으로 읽는 비효율에도 

     불구하고 더 바르게 수행될 수 있음 ) 


Full outer 조인 

 - Left Outer 조인 + Union All + Anti 조인 (Not Exists 필터) 이용 (9i 이전) 

 - ANSI Full outer 조인 ( 9i 이후 ) 

 - Native Hash Full Outer 조인 

    ● 11g 에서 'Native Hash Full Outer 조인'을 선보였고, 

        필요하면 10.2.0.4 버전에서도 Hidden 파라미터를 조정해 이 기능을 사용할 수 있음 

    ● 양쪽 테이블을 한 번씩 엑세스 한다는 것이 가장 큰 변화,  null인 레코드가 마지막에 

         출력된 것을 통해, 내부적으로 어떤 식으로 처리하는지 추정 가능 

 - Union All을 이용한 Full Outer 조인

    ● 두 테이블을 각각 한 번씩만 엑세스하였으며, 조인 대신 sort(또는 hash) group by 연산을 

        수행한다. 

       ( union all 을 사용할 때는 중복 제거가 없어 group by , sum 을 사용해야 한다.)  

+ Recent posts