기술블로그-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 등의 고급 인덱스 전략도 다룰 예정입니다!