DB구축 - 인덱스(Index)

강신찬·2023년 5월 19일

인덱스의 개념 및 선정기준, 고려사항

  • 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성된 데이터 구조

인덱스 컬럼 선정

  • 인덱스 컬럼의 분포도(Selectivity)가 10~15% 이내인 "컬럼"
  • 가능한 한 수정이 빈번하지 않는 "컬럼"
  • ORDER BY, GROUP BY, UNION이 빈번한 "컬럼"
  • 분포도가 좋은 컬럼단독 인덱스로 생성
  • 인덱스들이 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성

설계 시 고려사항

  • 새로 추가되는 인덱스는 기존 액세스 경로에 영향을 미칠 수 있음
  • 지나치게 많은 인덱스는 오버헤드(Overhead) 발생
  • 넓은 범위 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드를 발생시킴
  • 인덱스만의 추가적인 저장공간이 필요
  • 인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계

인덱스 종류

  • 클러스터드 인덱스(Clustered Index) / 넌클러스터드 인덱스(Non-Clustered Index)
  • 트리 기반 인덱스
    • 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것
  • 비트맵 인덱스
    • 인덱스 컬럼의 데이터를 Bit 값인 0, 1로 변환해 인덱스 키 사용
  • 함수 기반 인덱스
    • 컬럼에 특정 함수나 수식을 적용해 산출된 값을 사용하는 것
  • 비트맵 조인 인덱스
    • 다수의 조인된 객체로 구성된 인덱스
  • 도메인 인덱스
    • 개발자가 필요한 인덱스를 직접 만들어 사용하는 것(확장형 인덱스)

출처: https://m.blog.naver.com/wook2124/222108777138

profile
꾸준히 공부하는 풀스텍 개발자

0개의 댓글