기술블로그-Fastapi편
📌 데이터베이스 인덱스(Index)와 B-Tree 구조 정리
Chansman
2025. 5. 28. 14:00
📌 데이터베이스 인덱스(Index)와 B-Tree 구조 정리
데이터베이스에서 Index는 검색 성능을 획기적으로 향상시키는 핵심 도구이며, 내부적으로는 주로 B-Tree 구조로 구현됩니다. 이 글에서는 인덱스의 개념과 B-Tree 구조를 함께 정리합니다.
✅ 1. Index란?
Index(인덱스) 는 책의 목차처럼, 원하는 데이터를 빠르게 찾기 위해 사용하는 보조 구조입니다.
📚 비유
- 책을 처음부터 끝까지 읽으며 찾는 것 → 전체 스캔(Full Scan)
- 목차를 보고 바로 페이지로 이동 → 인덱스 사용
📌 주요 목적
- 검색 속도 향상 (O(n) → O(log n))
- WHERE 절, JOIN, ORDER BY 등 성능 최적화
💬 SQL 예시
CREATE INDEX idx_name ON Person(name);
→ 이후 아래 쿼리는 빠르게 동작:
SELECT * FROM Person WHERE name = '황정민';
✅ 2. B-Tree란?
B-Tree(Balanced Tree) 는 인덱스를 구현하는 대표적인 자료구조입니다.
📐 특징
- 노드가 정렬된 상태로 유지됨
- 한 노드에 여러 키 저장 가능 → 디스크 접근 최소화
- 높이를 낮게 유지하여 탐색 성능 보장
- 삽입, 삭제 시 자동으로 균형 유지
🧱 기본 구조
- 루트(Root), 내부 노드, 리프(Leaf)
- 각 노드는 자식 노드 포인터를 가짐
📊 시각 예시
[4]
/ \
[2] [6, 8]
/ \ / | \
[1] [3] [5] [7] [9]
→ 숫자가 정렬되어 있고, 검색할 때마다 분기 수가 줄어들어 빠른 탐색이 가능
✅ 3. Index와 B-Tree의 관계
항목 설명
Index | 검색 성능을 높이는 데이터베이스 구조 |
B-Tree | 인덱스를 구현하는 내부 알고리즘 구조 |
관계 | 대부분의 RDBMS는 B-Tree 기반 인덱스 사용 |
✅ 4. 실무 팁
- 인덱스는 SELECT 성능은 좋지만, INSERT/UPDATE/DELETE 성능은 떨어질 수 있음
- 너무 많은 인덱스는 오히려 성능을 저하시킴
- 자주 조회되는 칼럼, 조건절에 자주 쓰이는 칼럼에 인덱스 적용
- 인덱스는 데이터베이스 엔진에 따라 B-Tree 외에도 Hash, GIN, GiST 등 다른 구조도 사용됨
🧠 요약
- Index는 데이터를 빠르게 찾기 위한 보조 도구
- B-Tree는 Index를 효율적으로 구현하기 위한 핵심 자료구조
- 대부분의 SQL 기반 DB는 B-Tree 인덱스를 기본으로 사용
- 성능 최적화를 위해 꼭 필요한 개념
📌 다음 글에서는 Hash Index, Covering Index, Composite Index 등의 고급 인덱스 전략도 다룰 예정입니다!