데이터베이스

인덱스 index

린예라 2024. 11. 16. 21:32

db에서는 일반적으로 원하는 데이터를 찾을 때, FTS(Full Table Scan) 즉 처음부터 끝까지 차례대로 탐색을 하게 된다.

이것을 좀더 효율적으로 데이터를 찾을 수 있게 자료구조를 통해 만든 목차를 인덱스 라고한다. 백과사전의 각 내용을 찾기 쉽게 가,나,다 순으로 내용들을 정렬해 둔 것과 마찬가지이다.

이러한 인덱스를 설계 > 관리 > 개선하는 과정을 인덱스튜닝 이라고 한다.

 

이해하기 쉽게 이야기해보자면

여기서 백과사전은 DB, 백과사전의 내용들은 데이터, 가,나,다 순으로 정렬한 것은 인덱스, 백과사전에 이런 정렬방식을 적용하고 개선하는것을 인덱스 튜닝이라고 할 수 있겠다.

 

인덱스를 생성하면, 데이터베이스는 특정 컬럼 값과 데이터가 저장된 물리적 위치(테이블의 레코드 위치)를 연결하는 별도의 데이터 구조를 생성한다.
이 인덱스 구조 덕분에 데이터 검색 시 테이블 전체를 스캔하지 않고, 필요한 데이터를 빠르게 찾아올 수 있다.

 

그럼 이런 인덱스는 자료구조로 구현하게 되는데 다음과 같다.

인덱스에 사용되는 자료구조

(1) B-Tree / B+ Tree

  • 대부분의 관계형 데이터베이스에서 사용하는 자료구조.
  • 데이터를 정렬된 형태로 유지하며, 검색, 삽입, 삭제가 효율적으로 수행됨.
  • 특징:
    • 균형 잡힌 트리 구조로, 검색 시간이 O(log N).
    • 디스크 I/O를 최소화하도록 설계.
    • B+ Tree는 리프 노드에 모든 데이터를 저장하여 순차 검색에도 유리.

(2) Hash Table

  • 특정 데이터베이스(예: 메모리 기반 DB)에서 사용.
  • 해시 함수로 키를 변환하여 데이터를 빠르게 찾음.
  • 특징:
    • 검색 시간이 평균적으로 O(1).
    • 정렬이 필요 없는 단순 검색/삽입에 적합.
    • 범위 검색에는 부적합.

(3) 기타 자료구조

  • Bitmap Index: 값이 한정적인 컬럼(예: 성별, 상태 등)에 적합.
  • R-Tree: 공간 데이터를 처리하기 위해 사용(예: GIS, 지도 데이터).

 

'데이터베이스' 카테고리의 다른 글

SELECT문 처리 우선순위 정리  (0) 2024.11.17
SQL문 간단 정리  (1) 2024.11.14
동시성 제어  (0) 2024.04.12
트랜잭션 (Transaction)  (1) 2024.04.09
스키마 (Schema)  (0) 2024.04.08