본문 바로가기

카테고리 없음

[Oracle DB] 최적의 결합 방법 선택

반응형

결합의 종류와 장점 

 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) */


반응형