데이터베이스 인덱스(Index)란?
1. 개념
데이터베이스 인덱스(Index)는 데이터베이스의 성능을 향상시키기 위해 사용되는 자료구조로, 테이블의 하나 이상의 열에 대한 값과 해당 값이 저장된 레코드의 위치를 매핑하는 역할을 한다. 인덱스는 테이블에 대한 검색 및 정렬 작업의 속도를 높이므로 데이터 접근을 더욱 빠르고 효율적으로 할 수 있게 해준다.
2. 인덱스의 종류
- 클러스터형 인덱스 (Clustered Index): 테이블의 레코드들이 물리적으로 클러스터링된 형태로 저장되는 인덱스로, 테이블당 한 개만 생성 가능하다. 주로 기본키(primary key) 역할을 수행하며, 검색 작업 시 매우 빠른 성능을 제공한다.
- 비클러스터형 인덱스 (Non-clustered Index): 테이블의 데이터를 논리적으로 정렬한 형태로 저장되는 인덱스로, 테이블당 여러 개 생성 가능하다. 주로 보조적인 열(Column)들에 생성되며, 검색 작업 시 빠른 성능을 제공한다.
3. 인덱스의 장단점
3.1 장점
- 검색 작업 속도 향상: 인덱스를 통해 원하는 결과를 빠르게 찾을 수 있으므로 검색 작업이 더욱 효율적으로 수행된다.
- 정렬 작업 속도 향상: 인덱스를 사용하여 정렬 작업을 수행하면 레코드들의 물리적인 이동이 줄어들어 속도가 향상된다.
3.2 단점
- 인덱스 생성 및 유지에 따른 추가적인 저장 공간 필요: 인덱스는 데이터베이스의 레코드 및 인덱스 자체를 저장하기 위한 공간을 더 차지한다.
- 데이터 변경 작업의 성능 저하: 데이터 변경 작업(삽입, 갱신, 삭제) 시 인덱스도 함께 수정되어야 하므로 성능에 영향을 줄 수 있다. 특히 클러스터형 인덱스의 경우, 주로 기본키와 연관되기 때문에 수정 시 기본키 값의 변경이나 중복 등의 이슈에 유의해야 한다.
4. 인덱스의 생성 및 사용
인덱스는 주로 검색 작업이 빈번한 열을 대상으로 생성하며, CREATE INDEX 문을 사용하여 생성할 수 있다. 또한, SELECT 문을 실행할 때 특정 열에 대한 검색 조건으로 활용하면 데이터베이스 시스템은 해당 인덱스를 활용하여 효율적인 검색을 수행한다.
참고자료
- Database System Concepts, Avi Silberschatz, Henry F. Korth, and S. Sudarshan
댓글