데이터베이스 인덱스 (Database Index)
쉽게 풀면
두꺼운 전공 서적에서 "미토콘드리아"라는 단어를 찾는다고 생각해봅시다. 책 앞부터 한 장씩 넘기며 찾을 수도 있지만, 책 뒤에 있는 "찾아보기"에서 페이지 번호를 확인하면 훨씬 빠릅니다. 데이터베이스 인덱스도 마찬가지입니다. 수백만 개의 행이 있는 표에서 특정 값을 찾을 때, 인덱스가 없으면 처음부터 끝까지 전부 확인해야 하지만, 인덱스가 있으면 정렬된 목록에서 위치를 바로 찾아갈 수 있어 검색 속도가 크게 빨라집니다.
왜 중요한가
데이터 양이 늘어날수록 원하는 정보를 얼마나 빠르게 찾을 수 있는지가 시스템 전체의 성능을 좌우합니다. 데이터베이스 인덱스는 이러한 조회 성능을 개선하는 가장 기본적이면서도 효과적인 방법이기 때문에, 대용량 데이터를 다루는 시스템·소프트웨어 공학 논문에서 성능 최적화 실험을 설명할 때 빈번하게 등장합니다. 또한 인덱스를 어떻게 설계하느냐는 데이터베이스 스키마 설계, 질의 최적화와도 밀접하게 연결되는 주제입니다.
논문에서는 이렇게 쓰입니다
이 문장은 자주 검색되는 열에 인덱스라는 보조 구조를 추가함으로써, 데이터를 찾는 속도가 실제로 크게 개선되었다는 실험 결과를 보고하는 것입니다.
지리정보시스템(GIS) 분야에서는 일반적인 값 검색이 아니라 공간상의 범위 검색에 특화된 인덱스 구조를 활용했다는 뜻입니다.
정보검색 분야에서는 단어를 기준으로 어떤 문서에 그 단어가 등장하는지를 미리 정리해 두는 역색인이 검색 엔진의 핵심 인덱스 구조로 쓰인다는 의미입니다.
조금 더 깊게 보면
가장 흔히 쓰이는 인덱스 구조는 값을 정렬된 트리 형태로 저장하는 B-트리 계열이며, 이 외에도 등가 비교에 특화된 해시 인덱스, 공간 데이터를 다루는 R-트리, 텍스트 검색에 쓰이는 역색인 등 데이터 특성과 질의 유형에 맞춘 다양한 구조가 있습니다. 인덱스는 조회 속도를 높이는 대신 데이터 삽입·수정·삭제 시 함께 갱신해야 하므로 쓰기 성능과 저장 공간이라는 비용이 따르며, 이 때문에 어떤 열에 어떤 종류의 인덱스를 걸지를 결정하는 인덱스 설계 및 질의 실행 계획 분석이 별도의 연구 주제로 다뤄지기도 합니다.
주의할 점
인덱스는 검색 속도를 높여주지만 공짜가 아닙니다. 인덱스 자체도 저장 공간을 차지하고, 데이터를 새로 추가하거나 수정할 때마다 함께 갱신해야 하므로 쓰기 작업은 오히려 느려질 수 있습니다. 그래서 데이터베이스 정규화와 마찬가지로, 무조건 많이 적용하기보다 조회 패턴에 맞춰 필요한 곳에만 신중하게 설계해야 합니다.