Computer Science/Database

[면접을 위한 CS 노트] 4-5 인덱스

킹우현 2023. 11. 25. 20:26

1. 인덱스란 ?

인덱스(index)란 '추가적인 쓰기 작업'과 '저장 공간'을 활용하여 DB 테이블에 저장된 데이터의 검색 속도를 향상시키기 위한 자료구조이다.

 

만약 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 모든 페이지를 찾아 보는것은 오랜 시간이 걸린다. 그렇기 때문에 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가하는데, 데이터베이스의 index는 책의 색인과 같다.

 

DB에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 '데이터'와 '데이터의 위치'를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕는다.

 

인덱스는 DB 내의 특정 컬럼(열)이나 컬럼들의 조합에 대한 값과 해당 값이 저장된 레코드(행)의 위치를 매핑하여 데이터베이스 쿼리의 성능을 최적화하는 데 중요한 역할을 한다.

 

이처럼 데이터베이스에서 인덱스를 사용하면, 데이터를 검색할 때 전체 테이블을 스캔하는 것이 아니라, 인덱스를 사용하여 검색 대상 레코드의 범위를 줄일 수 있다. 이는 대량의 데이터를 다루는 경우 데이터 검색 속도를 크게 향상시킨다.

 

2. 인덱스의 자료구조

해시테이블(Hash Table)

해시 테이블은 키(Key)와 해시 값(Hash Value) 쌍으로 이루어진 자료구조이다. O(1)의 시간복잡도를 가지고 있어 상당히 빠른 검색을 할 수 있는 것이 특징이다.

 

B-Tree ⭐️

B-Tree는 데이터베이스에서 가장 널리 사용되는 인덱스 자료구조 중 하나이다. O(logN)의 시간 복잡도를 가지고 있다. B-Tree는 균형 잡힌 이진 검색 트리로 데이터베이스에서 검색 속도를 높이기 위해 사용된다.

 

루트 노드, 브렌치 노드, 리프 노드로 구성되어있다.

💡 B-Tree로 이루어진 인덱스가 효율적인 이유 : 균형잡힌 트리 자료구조트리 깊이의 대수확장성(리프의 노드 수가 트리 깊이에 비해 빠르게 성장)때문이다.

 

3. Index의 장단점

장점

  1. 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있다.
  2. 전반적인 시스템의 부하를 줄일 수 있다.

단점

  1. 인덱스를 관리하기 위한 추가적인 저장공간과 작업이 필요하다.
  2. 인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있다.