결합의 종류와 장점
1. Nested Loops 결합
: 인덱스를 사용해 결합할 레코드를 검색
장점 : 소수의 결과를 리턴하는 온라인 화면 처리 등에 적합
: 외부 테이블에서 레코드를 패치하고 결합 조건에 일치하는 레코드를 내부테이블에서 검색
while{
레코드를 1개 페치 < 외부테이블
while{
외부 테이블의 결합 조건에 일치하는 레코드를 페치 < 내부테이블
}
}
2. Hash 결합
: 결합 키로 해시 테이블을 생성하고, 해당 해시 테이블을 기반으로 결합할 레코드를 검색
장점 : 처음에 해시 테이블을 생성해야 하므로 테이블 풀 스캔이 발생하지만, 이후에는 고속으로 대량의 레코드를 다룰 수 있으므로 배치 처리 또는 장부 출력에 적합
: 외부 테이블을 읽어 들이고 결합 키를 기준으로 해시 테이블을 만들어 PGA 영역에 올리고, 해시에 기반을 두고 내부 테이블을 검색해서 결합
: 외부 테이블을 해시 테이블로 생성하는데 시간려 처음 데이터 결합에는 시간이 걸리지만 이후 결합은 메모리의 PGA영역에서 수행되므로 매우 빨라진다.
: PGA 영역이 부족하면 디스크에 있는 일시 테이블 영역을 사용하므로 성능에 문제가 발생할 수 있다. (디스크가 메모리보다 느리기 때문에)
이럴 때는 초기화 매개변수 pga_aggregate_target으로 PGA를 확장
결합 지정 힌트
1. Nested Loops
SELECT /*+ USE_NL(테이블 별칭1 테이블 별칭2) */
2. HASH
SELECT /*+ USE_HASH (테이블 별칭1 테이블 별칭2) */