[Database] NL Join, hash join, sort merge Join
Nested Loop join
- Join 대상 테이블 중 선행 처리되는 테이블에서 자료 1건을 추출 후 후행하는 테이
블에서 해당 자료가 존재하는지 비교
- data가 존재할 경우 결괄르 전송하고 그렇지 않을 경우 해당 자료를 포기하는 방법
- nl join은 대량의 data 중 소량의 data만 빠르게 추출하고자하는 경우 주로 사용
- 특정 자료를 한정할 수 있는 조건을 입력해 소량의 자료를 추출하는 경우 nested loop join이 유리하다.
- inner table에 접근 시 index를 사용하지 못할 경우 성능에 불리
- 빠른 response time을 갖는다.
Hash join
- join 대상 row source 중 하나를 먼저 읽어 join key 값을 읽어 hash함수를 적용하여 메모리의 hash area상에 join key에 대한 hash table 구성
- 후행 처리되는 row source의 join key 값에 hash func를 적용하여 hash table에서 값의 존재 여부를 확인하는 방법으로 수행한다.
- 자료량이 많은 table을 통해 많은 자료를 처리하는 높은 throughput이 중요한 경우 사용된다.
- '=' 연산에 상응하는 조건인 경우에만 사용할 수 있다,
- build table의 크기가 작은경우
- 소량의 자료를 추출할 때 불리하다.
Sort merge join
- join대상 row source를 join key를 중심으로 각각 정렬 후 값을 비교해 서로 매칭되는 자료를 통합하여 join하는 방법이다.
- 정렬하는 과정에서 성능 지연 현상이 발생한다.
- join 조건이 범위로 주어져도 연산할 수 있다.
- 정렬된 key값을 사용하면 유리하다.
- 뭔가 hash, nl의 트레이드 오프 관계로 인하여 등장했으나 실무에서는 자주 쓰이지 않는다고 함.