728x90
Nested Loop Join과 Hash Join, Sort Merge Join을 비유로 설명해보겠습니다:
Nested Loop Join (트럼프 카드 한 세트와 다른 트럼프 카드 한 세트를 짝짓는다고 가정):
- 우리에게는 두 세트의 트럼프 카드가 있습니다. 한 세트의 카드를 왼손으로, 다른 세트의 카드를 오른손으로 잡습니다.
- 왼손에 든 카드는 바깥쪽 루프로, 오른손에 든 카드는 안쪽 루프로 선택합니다.
- 바깥쪽 루프의 각 카드를 하나씩 순회하면서, 안쪽 루프의 카드들 중에서 같은 숫자를 가진 카드를 찾습니다. 그리고 그 짝을 짓습니다.
- 모든 카드들을 순회하면서 짝을 찾을 때까지 반복합니다.
- 순회 과정에서 일치하는 카드를 찾는 것이 너무 오래 걸리면 성능이 저하될 수 있습니다.
Hash Join (트럼프 카드를 하트, 다이아몬드, 스페이드, 클로버로 그루핑하여 짝짓는다고 가정):
- 우리에게는 두 세트의 트럼프 카드가 있습니다. 하나는 하트, 다이아몬드, 스페이드, 클로버로 그루핑된 카드 세트, 다른 하나도 하트, 다이아몬드, 스페이드, 클로버로 그루핑된 카드 세트입니다.
- 먼저 두 세트 모두에서 하트 그룹, 다이아몬드 그룹, 스페이드 그룹, 클로버 그룹을 해시 테이블에 저장합니다. 이렇게 하면 같은 그룹의 카드가 해시 테이블에 빠르게 찾을 수 있습니다.
- 이제 해시 테이블에서 첫 번째 세트의 하트 그룹을 순회하면서, 다른 세트의 하트 그룹과 일치하는 카드를 찾아서 짝을 짓습니다.
- 해시 테이블에서 다이아몬드, 스페이드, 클로버 그룹도 순회하면서, 다른 세트의 해당 그룹과 일치하는 카드를 찾아서 짝을 짓습니다.
- 모든 그룹을 순회하면서 짝을 찾을 때까지 반복합니다.
- 해시 테이블을 만드는 과정이 한 번 발생하므로 초기 비용은 있지만, 카드를 찾는 것은 빠르게 이루어집니다.
Sort Merge Join (트럼프 카드를 각 세트를 전체 정렬한 다음, 짝을 맞추는 것으로 가정):
- 먼저 우리에게는 두 세트의 트럼프 카드가 있습니다.
- 첫 번째 트럼프 카드 세트와 두 번째 트럼프 카드 세트를 각각 숫자 순으로 정렬합니다. 즉, 하트, 다이아몬드, 스페이드, 클로버 각각의 숫자 순으로 정렬합니다.
- 정렬된 두 세트의 트럼프 카드를 순서대로 비교합니다.
- 만약 첫 번째 세트의 카드가 두 번째 세트의 카드와 일치한다면, 이 두 카드는 짝이 됩니다.
- 첫 번째 세트와 두 번째 세트의 카드를 모두 비교하면서 짝을 찾을 때까지 반복합니다.
- 모든 카드를 비교하고 짝을 찾으면, Sort Merge Join이 완료됩니다.
목차
반응형
'코딩 > 오라클 튜닝' 카테고리의 다른 글
조인 알고리즘 선택 기준: Nested Loop Join, Hash Join (0) | 2023.07.27 |
---|---|
Hash Join 예시 (0) | 2023.07.27 |
Nested Loop Join 예시 (0) | 2023.07.27 |
관계형 데이터베이스(RDBMS) 조인 알고리즘 종류: Nested Loop Join, Hash Join, Sort Merge Join (0) | 2023.07.26 |
오라클 튜닝 목차 (0) | 2023.07.26 |
댓글