본문 바로가기

RDBMS

조인 종류 및 수행원리

조인의 종류 및 수행원리


조인의 종류

1. NL ( Nested loop Join )

2. Sort Merge Join

3. Hash Join


조인의 수행 원리

1. NL ( Nested loop Join )

  • for문을 중첩하여 랜덤하게 데이터를 액세스하는 조인 방식
  • 선행테이블 (외부테이블) 에서 조건에 만족하는 데이터 (행) 만큼 반복 수행


① 선행 테이블에서 주어진 조건에 만족하는 행을 찾음

② 선행 테이블의 조인 키 값을 가지고 후행 테이블에서 조인 수행

③ 후행 테이블의 인덱스에 선행 테이블의 조인 키가 존재하는지 확인

④ 인덱스에서 추출한 레코드 식별자를 이용하여 후행 테이블을 엑세스

⑤ 후행 테이블에 주어진 조건까지 모두 만족하면 해당 행을 추출 버퍼에 삽입

⑥ 앞의 작업을 반복 수행



2. Sort Merge Join

  • 조인 컬럼 기준으로 각 테이블을 먼저 정렬한 다음 조인을 수행하며, 인덱스를 사용하지 않음
  • 넓은 범위의 데이터를 처리할 때 이용되는 조인 기법으로 거의 모든 데이터를 읽어야 할 때 사용
  • 정렬할 데이터가 많을 경우 정렬 작업을 수행하는 도중 임시 영역(디스크)를 사용하기 때문에 성능이 저하될 수 있음
  • Hash Join 과 달리 동등조인과 비동등조인에 대해서도 조인 가능


① 선행 테이블에서 조건을 만족하는 행을 찾음
② 선행 테이블의 조인키를 가지고 정렬
③ 후행 테이블에서 조건을 만족하는 행을 찾음
④ 후행 테이블의 조인키를 가지고 정렬
⑤ 정렬된 결과를 이용하여 조인
⑥ 조인이 성공하면 추출 버퍼에 삽입

3. Hash Join


  • 조인 키를 기준으로 해쉬 함수를 적용하여 해쉬 테이블을 생성 한다.
  • 결과가 정렬되지 않을 수 있음 - 동등 조인만 가능
  • 선행 테이블의 데이터가 적은것이 효율적 ( 선행테이블의 데이터를 해싱하면서 해쉬테이블을 만들고 후행 테이블은 해쉬값 존재 유무만 판단하여 해쉬값이 있을때만 데이터를 해쉬테이블에 저장. 메모리 사용 효율이 좋아지며, 메모리 부족으로 디스크를 사용하는 경우를 줄어듬 )


① 선행 테이블에서 조건을 만족하는 행을 찾음

② 선행 테이블의 조인키를 기준으로 해쉬 함수를 적용하여 해쉬테이블 생성

③ 후행 테이블에서 조건을 만족하는 행을 찾음

④ 후행 테이블의 조인키를 기준으로 해쉬 함수를 적용하여 해쉬테이블 생성

⑤ 조인에 성공하면 추출 버퍼에 삽입




참고 사이트 : http://geniusjo.tistory.com/entry/%EC%A1%B0%EC%9D%B8-%EC%88%98%ED%96%89-%EC%9B%90%EB%A6%AC

'RDBMS' 카테고리의 다른 글

트랜잭션 정리  (0) 2017.05.12
정규화와 반정규화  (0) 2017.05.11