같은 JOIN 문장이라도 행 수, 인덱스, 조인 조건, 정렬 상태가 달라지면 전혀 다른 실행 방식이 선택됩니다.
왼쪽의 입력 조건을 보고 오른쪽 실행 방식으로 이어가면, 왜 그 조인 방식이 선택되는지 바로 연결됩니다.
반복 횟수가 작고 각 탐색이 짧으면, 행마다 내부를 찍어 들어가는 방식이 싸게 먹힙니다.
작은 쪽을 해시 테이블로 만든 뒤 큰 쪽을 흘려보내면 대량 매칭을 정렬 없이 처리할 수 있습니다.
같은 순서로 맞춰 놓고 앞으로 병합하면, 정렬된 흐름과 범위 비교를 자연스럽게 활용합니다.
Nested Loops는 “작게 여러 번”, Hash Join은 “크게 한 번”, Sort Merge Join은 “정렬된 순서로 앞으로” 처리한다고 기억하면 실행 계획을 읽기 쉬워집니다.