본문 바로가기
Database/INDEX

인덱스란?

by BAYABA 2021. 10. 28.
  1. 개인 공부 목적으로 작성한 글입니다.
  2. 아래 출처를 참고하여 작성하였습니다.

목차

  1. 인덱스란?
  2. 인덱스 내부 자료구조
  3. 인덱스 거는 컬럼 기준

1. 인덱스란?

  1. DBMS가 인덱스가 적용된 '컬럼 값'과 '해당 레코드(ROW)가 저장된 주소'를 key-value로 인덱스를 만듭니다.
  2. 그 인덱스 데이터를 따로 파일로 저장해놓고 그것을 검색해서 검색 효율을 높이는 방법입니다.
  3. 인덱스는 항상 정렬된 상태를 유지하므로 range scan을 할 수 있습니다.

2. 인덱스 내부 자료구조

  1. 인덱스에서 가장 많이 사용하는 구조 B-Tree, Hash Table
  • 그 중에서도 B-Tree가 많이 쓰이는데 그 이유는 범위 탐색이 가능하기 때문입니다.
  1. B-Tree는 인덱스를 저장하는 블럭들이 트리 구조를 이루고 있습니다.
  • root block, branch block, leaf block이 존재
  • leaf block의 깊이가 모두 동일하게 균형이 잡혀있습니다.
  1. B-tree 인덱스 탐색 과정
  • 첫번째로 인덱스의 루트페이지를 접근해서 찾는 값이 어떤 리프 페이지(데이터 페이지)에 있는지 확인 후
  • 리프 페이지로 이동 후에 페이지의 내부 행들을 검색해서 해당 데이터를 찾는 순서로 구성됩니다.


3. 인덱스 거는 컬럼 기준

  1. 자주 조회하는 컬럼, 한 번 조회할 때 오래걸리는 컬럼에서 사용합니다.
  2. 인덱스로 높은 효율을 얻으려면 해당 인덱스로 많은 부분을 걸러내야 합니다.
  3. 컬럼 1개 → 카디널리티 가장 높은 것 / 여러 개 → 카디러널리티 높 → 낮은 순
  4. 카디널리티란 해당 컬럼의 중복된 수치를 의미
  • 주민번호 → 카디널리티가 높음 / 성별 → 카디널리티가 낮음

출처

  1. [MSSQL] 인덱스의 내부 동작 방식

'Database > INDEX' 카테고리의 다른 글

결합 인덱스  (0) 2021.10.29