본문 바로가기
카테고리 없음

데이터베이스 인덱스(Index) 란 무엇인가?

by sftt 2023. 12. 14.

데이터베이스 인덱스(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

댓글