Nested Loop Join(NL 조인, 중첩 루프 조인)은 두 개의 테이블을 조인할 때 가장 기본적인 방법으로,
하나의 테이블(외부 테이블, Outer Table)의 각 행을 반복하며 다른 테이블(내부 테이블, Inner Table)과 비교하는 방식입니다.
NL 조인은 인덱스가 있는 경우 효과적이며, 소규모 데이터셋에서 빠르게 실행될 수 있지만, 대용량 데이터에서는 성능이 저하될 수 있습니다.
NL 조인은 반복문(Looping)을 활용한 조인 방식입니다.
NL 조인은 다음과 같은 과정으로 실행됩니다.
NL 조인은 인덱스 활용 여부에 따라 다음과 같이 나뉩니다.
✔ 간단한 구현 (모든 DBMS에서 지원)
✔ 인덱스를 활용하면 효율적으로 실행 가능
✔ 작은 데이터셋에서는 성능이 우수
✔ 메모리 사용량이 적음
❌ 인덱스가 없으면 성능이 매우 저하됨
❌ 데이터 크기가 크면 비효율적 (O(M×N)의 시간 복잡도)
❌ 내부 테이블이 크면 조인 성능 저하
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE salaries (
emp_id INT,
salary INT,
FOREIGN KEY (emp_id) REFERENCES employees(id)
);
EXPLAIN ANALYZE
SELECT A.id, A.name, B.salary
FROM employees A
JOIN salaries B
ON A.id = B.emp_id;
Nested Loop Join
이 표시되면, 해당 조인이 NL 조인을 사용하고 있다는 의미입니다.CREATE INDEX idx_salary_empid ON salaries(emp_id);
EXPLAIN ANALYZE
SELECT A.id, A.name, B.salary
FROM employees A
JOIN salaries B
ON A.id = B.emp_id;
idx_salary_empid
인덱스를 추가하면 인덱스 기반 NL 조인으로 실행되며 성능이 향상됨.조인 방식 | 사용 조건 | 장점 | 단점 |
---|---|---|---|
Nested Loop Join | 인덱스가 있을 때 | 작은 테이블에서 빠름 | 인덱스 없으면 느림 |
Sort Merge Join | 정렬된 데이터에서 적합 | 범위 조인에서 빠름 | 정렬 비용이 큼 |
Hash Join | 등가 조인(=)에서 적합 | 대용량 데이터에서 빠름 | 많은 메모리 필요 |
1️⃣ 인덱스 활용
2️⃣ 외부 테이블을 작은 테이블로 설정
3️⃣ 병렬 실행 활용
4️⃣ 통계 정보 활용 (ANALYZE, EXPLAIN)
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…