인덱스는 다 똑같지 않다? 데이터베이스 인덱스 종류와 성능 비교
인덱스 구조, 제대로 알고 써야 한다
데이터베이스에서 인덱스는 단순한 성능 개선 도구가 아닙니다. 잘못된 인덱스는 오히려 성능 저하를 유발하기도 하죠. 이번 글에서는 B-tree, Hash, Bitmap, GiST, R-tree 인덱스의 특징을 비교하고, 언제 어떤 인덱스를 사용하는 것이 효과적인지 정리해보겠습니다.
인덱스 구조별 개념
-
B-tree
범용적으로 가장 널리 쓰이며, 정렬 기반 검색에 최적화된 인덱스입니다. -
Hash
정확한 값 매칭 검색에 강점을 가지며, 빠른 검색 속도를 제공합니다. -
Bitmap
다중 조건 검색에 유리하며, 데이터가 중복될수록 성능이 향상됩니다. -
GiST (Generalized Search Tree)
범용적인 탐색이 가능한 인덱스로, 위치 기반 검색이나 텍스트 검색에 사용됩니다. -
R-tree
공간 데이터 처리에 특화되어 있으며, 지리정보시스템(GIS)에서 자주 사용됩니다.
인덱스별 특성 비교
| 인덱스 종류 | 검색 속도 | 쓰기 성능 | 저장 공간 | 활용 분야 |
|---|---|---|---|---|
| B-tree | 빠름 | 보통 | 보통 | 범용 검색 |
| Hash | 매우 빠름 | 낮음 | 적음 | 키-값 검색 |
| Bitmap | 빠름 | 보통 | 적음 | 다중 조건 검색 |
| GiST | 보통 | 빠름 | 많음 | 위치/텍스트 검색 |
| R-tree | 보통 | 낮음 | 많음 | 공간 데이터 |
실무 활용 팁
- 일반적인 WHERE 조건 쿼리에는 B-tree가 무난합니다.
=,IN조건이 많다면 Hash 인덱스를 고려해보세요.- 성별, 상태값처럼 중복이 많은 필드에는 Bitmap 인덱스가 효과적입니다.
- 위치 정보나 텍스트 검색이 필요하면 GiST나 R-tree를 고려해야 합니다.
마무리하며
인덱스는 단일한 성능 향상 도구가 아닙니다. 목적에 맞는 인덱스를 선택하고, 쿼리 특성과 데이터 패턴을 고려한 설계를 통해 데이터베이스 성능을 극대화할 수 있습니다.