Outer Join


어떤 집합을 기준으로 해서 조인되는 다른 집합과의 연결에 실패했더라도 그 결과를 추출하는 조인


특징

조인 순서가 미리 정해지므로 조인순서를 이용한 튜닝이 불가함

가능한 Outer Join은 피하도록 함

Outer Join을 담당하는 테이블에 대한 모든 조건에 (+)기호가 붙여야 원하는 결과를 얻을 수 있음

(+)기호를 이용하여 IN, OR의 연산자를 이용하여 비교할 수 없음(Inline View를 이용하여 해결)

(+)기호를 이용하여 subquery와 비교할 수 없음(OR IS NULL 조건과 비교해야함) 

Semi Join


조인과 매우 유사한 데이터 연결 방법

서브쿼리를 사용했을 때 메인 쿼리와의 연결하는 처리

Nested Loop 형, Sort Merge 형, Hash 형, Filter 형 등


Anti Join


부정형(NOT) 술어를 사용하는 서브쿼리가 있는 SELECT문




# 유형별 조인 튜닝 가이드 요약 #




– 조인순서


조인 수행의 효율은 조인 각 대상 집합의 처리 범위와 조인의 순서가 중요함

순서가 적절하지 못할 경우 처리범위 과다로 액세스 량이 증가하여 성능 저하 발생


<튜닝 가이드>


Nested Loop 조인 경우, 처리 범위를 최소화 할 수 있도록 Driving 테이블 선정

조인의 처리 범위 최소화가 중요하나 인덱스 스캔의 방해(컬럼 내/외부 변형 등) 등의 이유로 적절한 인덱스 선택이 어려워 짐으로써 조인 순서에 오류 발생 가능

통계정보가 정확하지 못할 경우, 처리 범위를 최소화할 수 있는 테이블 선정에 오류 발생 가능

부적절한 힌트(ordered) 사용시 조인의 순서에 오류 발생 가능

조인 대상이 과다하고 방법이 복잡할 경우, 통계정보와 구문상에 이상이 없을 지라도 조인의 순서에 오류가 발생 가능

<튜닝 방법>


통계정보 생성/갱신

구문 내 조인 표현의 명료화

부적절한 힌트 제거

조인 순서 강제화 힌트 적용(ORDERED)


Index Range Scan

(결합인덱스)


결합 인덱스의 가장 큰 특징은 선두 컬럼이 (=,in)으로 들어오지 않아서 범위가 넓어질 경우에 

후행 컬럼의 selectivity가 좋다고 할지라도 인덱스를 액세스하는 범위를 줄여주지 못하고, 테이블을 액세스하는 범위만을 줄여 줄 수 있음.


결합 인덱스의 첫 번째 칼럼이 ‘=‘ 조건으로 사용될 경우 2번째 이후의 인덱스 칼럼이 인덱스로서의 역할을 할 수 있으므로 

인덱스를 액세스하는 범위를 줄여줄 수 있음





By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다