본문 바로가기

DataBase/SQL 튜닝

[SQL 튜닝] NL 조인(Nested Loop Join) 이해와 튜닝

728x90
반응형

NL 조인(Nested Loop Join) 이해와 튜닝 포인트

NL 조인이란?

NL 조인(Nested Loop Join)은 이름 그대로 중첩 반복문 구조를 활용하는 조인 방식이다.

PL/SQL로 단순화해 표현하면 아래와 같다.

for outer in 1..100 loop
  for inner in 1..100 loop
    -- Do something...
  end loop;
end loop;

즉, Outer 테이블의 행을 하나씩 읽으면서 Inner 테이블을 탐색해 매칭되는 행을 찾는다.

 


NL 조인에서 인덱스 활용

  • Outer 테이블: 크기가 크지 않다면 굳이 인덱스를 사용하지 않고 Table Full Scan을 선택하기도 한다. 한 번만 스캔하면 되기 때문이다.
  • Inner 테이블: 반드시 인덱스를 사용하는 것이 일반적이다. Outer의 각 행마다 Inner 테이블을 반복적으로 액세스해야 하므로 인덱스 유무가 성능을 좌우한다.

 


NL 조인 튜닝 포인트

  1. 랜덤 액세스 과다 여부 확인
    • Outer 결과 건수가 많아질수록 Inner 탐색 횟수가 증가 → 랜덤 액세스가 폭증할 수 있다.
    • 이때는 Inner 테이블 인덱스에 필터링 컬럼을 추가해 효율을 높이는 것을 고려해야 한다.
  2. 조인 액세스 횟수 줄이기
    • Outer 테이블의 필터링 결과 건수가 곧 조인 액세스 횟수를 결정한다.
    • 따라서 조인 순서를 변경하거나 Outer 조건을 최적화하여 액세스 횟수를 줄이는 것이 핵심이다.
  3. 부분범위 처리 활용
    • NL 조인은 결과를 한 건씩 순차적으로 반환하므로, 사용자가 조회 버튼을 누르자마자 일부 결과를 즉시 보여줄 수 있다.
    • 대량 조인에서도 빠른 첫 응답 속도를 보장한다는 장점이 있다.

 


NL 조인 특징 요약

  1. 랜덤 액세스 위주의 조인
    • 레코드 하나를 읽기 위해 블록 단위 랜덤 액세스를 수행.
    • 소량 데이터에는 빠르지만 대량 조인에서는 불리하다.
  2. 순차적 처리, 부분범위 처리 가능
    • 한 건씩 결과를 반환하므로 빠른 응답이 가능하다.
    • Outer 처리 범위가 전체 일량에 큰 영향을 준다.
  3. 인덱스 전략이 중요
    • Inner 테이블 조인 컬럼에 인덱스가 있는지, 어떤 컬럼 조합으로 구성됐는지가 성능에 직결된다.

 


언제 NL 조인을 선택할까?

NL 조인은 OLTP 시스템에 특히 적합하다.

  • 소량 데이터를 빠르게 조회하는 온라인 업무
  • 부분범위 처리(빠른 응답)가 중요한 환경
  • 조인 조건 컬럼에 인덱스가 잘 설계된 경우

먼저 NL 조인을 기본적으로 고려하되, 성능 저하가 발생한다면 위 튜닝 포인트를 따라 랜덤 액세스 발생 지점을 분석하고, 인덱스 구성 및 조인 순서를 최적화하는 것이 올바른 접근이다.

 


👉 결론: NL 조인은 OLTP 시스템의 기본 조인 방식이다.
작은 데이터를 빠르게 찾아야 하는 상황에서 강력하지만, 대량 데이터 조인에서는 해시 조인이나 소트 머지 조인 같은 대체 방법을 검토해야 한다.

728x90
반응형

'DataBase > SQL 튜닝' 카테고리의 다른 글

[SQL 튜닝] 소트 머지 조인(Sort Merge Join) 이해  (0) 2025.09.30