비용을 가르는 한 줄

반복 횟수 × 내부 탐색 비용

Nested Loop Join은 구조가 단순합니다. 대신 outer를 몇 번 돌고, 그때마다 inner를 얼마나 싸게 찾는지가 성능을 결정합니다.

외부 행 수 드라이빙 테이블이 클수록 반복 증가
×
내부 1회 프로브 비용 인덱스면 작고, 넓은 재탐색이면 큼
반복 동작
STEP 1 외부 행 1건 선택

드라이빙 테이블에서 현재 행을 꺼낸다

STEP 2 내부 테이블 조회

조인 키로 매칭 후보를 찾고 조건을 확인한다

STEP 3 일치 행만 출력

이후 다음 외부 행으로 넘어가 같은 과정을 반복한다

핵심: 구조는 같아도 outer 건수가 많아지면 step 2가 누적되어 전체 비용이 급격히 커집니다.
잘 맞는 경우
outer가 작고 inner에 인덱스가 있음
비싸지는 경우
outer가 크고 inner를 넓게 다시 봐야 함
내부 접근
필요한 위치만 바로 seek
반복은 있어도 1회 비용이 작다
외부 행마다 넓은 재탐색
full scan 성격이 겹치면 누적 비용이 커진다
비용 감각
10 rows x index seek
1,000,000 rows x wide probe
운영 의미
OLTP처럼 소량 결과를 빠르게 찾는 조인에 강하다
Random I/O와 CPU가 함께 늘어 대량 조인에서 급격히 불리해진다
튜닝 포인트

드라이빙 결과를 먼저 줄이고, inner를 조인 키 인덱스로 바로 찾게 만들수록 Nested Loop Join의 장점이 살아납니다.