X

데이터베이스 인덱스

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. 인덱스 선정 시 고려사항

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