데이터베이스 인덱스

I. 데이터베이스 검색속도 향상, 인덱스의 개념

  • 데이터베이스에 저장된 자료를 빠르게 조회하기 위해 테이블에 연관되어 독립적인 저장공간 보유 객체

 

II. 구성된 인덱스 평가 기준

가. 테이블 형태별 인덱스 평가 기준

평가 기준설명
소형 테이블– 테이블이 작더라도 PK는 반드시 생성
– 자주 참조되는 테이블 경우 인덱스 필요
중대형 테이블– 기존 인덱스 블록 사용비율 낮은 경우 다수
– 대량 입력, 오랜 시간 경과 시 리빌드 필요
대형 테이블– PK 미사용 및 Unique Index 생성 고려
– 사용하는 파티션의 인덱스만 사용 고려

나. 분포도 형태별 인덱스 평가 기준

평가 기준설명
분포도 낮음– 분포도 낮은 경우 인덱스 효율이 높음
– 손익분기점 기준 인덱스 사용여부 결정 필요
분포도 높음– 분포도 높은 경우 인덱스 미사용 가능
– 부분 범위 처리 시 실제 분포도 감소 가능
  • 이 외 액세스 빈도 등 사용 목적에 따른 인덱스 평가 필요

 

III. 비트리, 비트맵, 함수기반 인덱스

가. 물리적 구분에 따른 비트리, 비트맵 인덱스

– 비트리(B-Tree) 인덱스

항목내용
개념– 루트노트부터 키 값 비교하며 트리형태 하향식 검색
목적– 범용적으로 가장 많이 사용하는 인덱스 구조
특징– 루트(root), 브랜치(branch), 리프(leaf) 블록으로 구성
생성– CREATE INDEX 인덱스명 ON 테이블명;

– 비트맵(Bitmap) 인덱스

항목내용
개념– 비트 이용 컬럼값 저장하여 RowID 자동 생성
목적– 대량 데이터 조회 작업이 많은 시스템에 유용
특징– 루트, 브랜치 블록은 비트리와 동일, 리프는 비트맵
생성– CREATE BITMAP INDEX 인덱스명 ON 테이블명;

나. 논리적 구분에 따른 함수기반 인덱스

항목내용
개념– 인덱스 생성 컬럼에 함수나 산술식 적용
목적– WHERE 절에서 함수가 자주 사용되는 경우 사용
특징– 테이블의 컬럼들을 가공한 논리적 컬럼을 인덱스화
생성– CREATE INDEX 인덱스명 ON 테이블명(함수식(컬럼));
  • 이 외에도 해시, 클러스터 인덱스 등 사용 목적에 따른 인덱스 선정 필요

 

IV. 인덱스 선정 시 고려사항

방안설명
인덱스 사용여부– 인덱스 사용 시 효과 여부 확인 필요
– 인덱스 역할 중복 시 악영향 발생
이상적 구성– 이상적인 구성으로 인덱스 역량 향상
– 최소 인덱스로 모든 액세스 수용
실측자료 활용– 가능한 실측자료 활용 종합 분석 필요
– 액세스 빈도, 분포도, 테이블 크기 등
  • 인덱스 사용 시 득실 계산 후 평가 기준 통한 사용 형태 선정

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^