티스토리 뷰

l 조인이란?

-       두 개 이상의 테이블을 하나의 집합으로 만드는 연산이다.

-       SQL문에서 FROM절에 두 개 이상의 테이블이 나열될 경우 조인이 수행된다.

-       조인 연산은 두 테이블 사이에서 수행된다.

-       조인의 종류 : NL Join, Sort Merge Join, Hash Join

 

1.   NL Join

NL Join 정의

-       두 개의 테이블을 중첩된 반복문처럼 조인을 수행한다.

-       반복문 외부(처음 테이블)에 있는 테이블을 선행테이블 또는 외부 테이블, 반복문 내부(두 번째 테이블)에 있는 테이블을 후행테이블 또는 내부 테이블이라고 부른다.

 

-       for 선행 테이블 읽음 (외부 테이블(Outer Table))
  for
후행 테이블 읽음 (내부 테이블(Inner Table))
      (
선행 테이블과 후행 테이블 조인)

 

NL Join 중요사항

-       결과 행의 수가 적은 테이블을 선행 테이블로 선택한다.


1. 선행 테이블에서 조건에 맞는 값을 찾는다.

2. 선행 테이블의 조인 키를 가지고 후행 테이블 조인 키를 확인한다.

3. 후행 테이블의 인덱스에 선행 테이블의 조인 키 존재를 확인한다.

4. 인덱스에서 추출한 레코드 식별자를 이용하여 후행 테이블에 액세스한다.

5~11 앞의 작업을 반복 수행한다.

 

2.   Sort Merge Join

Sort Merge Join 정의

-       Sort Merge Join은 조인 칼럼을 기준으로 데이터를 정렬하여 조인한다.

 

Sort Merge Join 특징

-       넓은 범위의 데이터를 처리할 때 주로 이용한다.

-       정렬 데이터가 많을 경우 성능이 떨어질 수 있다.
(
디스크 I/O로 인한 부하 발생)

-       비동등 조인에 대해서도 조인이 가능하다.

-       인덱스를 사용하지 않아 인덱스가 존재하지 않을 경우에 사용할 수 있다.


1.     선행 테이블에서 조건에 맞는 행을 찾는다.

2.     선행 테이블의 조인 키를 기준으로 정렬 작업을 수행한다.

1 ~ 2번 작업을 반복 수행한다.

3.     후행 테이블에서 조건에 맞는 행을 찾는다.

4.     후행 테이블의 조인 키를 기준으로 정렬 작업을 수행한다.

3 ~ 4번 작업을 반복 수행한다.

5.     정렬된 결과를 이용하여 조인 수행한다. -> 결과 값은 버퍼에 저장한다.

 

3.   Hash Join

Hash Join 정의

-       해싱 기법을 이용하여 조인 수행

 

Hash Join 특징

-       NL Join의 랜덤 액세스 문제점과 Sort Merge Join의 정렬 작업의 부담을 해결하기 위한 대안으로 사용된다.

-       조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있다.

-       “=”로 수행하는 조인. , 동등 조인만 가능하다.(해쉬 함수를 이용하기 때문이다.)

-       해쉬 테이블의 크기가 메모리에 적재할 수 있는 크기보다 커지면 디스크 사용(I/O에 따른 부하 가중). , 해쉬 조인할 때 결과 행의 수가 적은 테이블을 선행 테이블로 사용한다.


1.     선행 테이블에서 조건에 만족하는 행을 찾는다.

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

1 ~ 2번 작업을 선행 테이블의 조건 만큼 반복한다.

3.     후행테이블에서 조건에 만족하는 행을 찾는다.

4.     후행 테이블의 조인 키를 기준으로 해쉬 함수를 적용하여 해당 버킷을 찾는다.

5.     조인에 성공하면 추출버퍼에 저장한다.

3 ~ 5번 작업을 후행 테이블의 조건 만큼 수행한다.

반응형
LIST
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함