본문 바로가기
정보처리기사/필기

[정보처리기사 필기 요약] 인덱스(INDEX) (1)

by 채연2 2021. 3. 3.

* 인덱스

  • 데이터 빠르게 찾을 수 있는 수단
  • 테이블에 대한 조회 속도 높여 주는 자료구조
  • 테이블에서 자주 사용되는 컬럼 값 빠르게 검색 가능토록 색인 만들어 놓은 형태
  • 과다한 인덱스 생성은 DB 공간 많이 차지하며 Table Full Scan보다 속도가 느려질 수 있음
  • 테이블 데이터 삽입, 삭제, 변경 수행하는 DML 작업 시 성능 떨어짐

 

* 인덱스 구조와 장점

  • 인덱스 구성 위해 가장 많이 사용하는 검색 트리 : B-Tree 구조
  • DB 성능 향상 위한 DB 튜닝 수단으로 가장 일반적인 방법
  • 장점
    • 데이터 검색 위한 SQL 구문 변경 않아도 검색 성능 개선
    • 데이터 검색하기 위한 별도 객체로서 테이블 데이터에 영향 주지 않음

 

* 인덱스 사용

  • 테이블의 특정 레코드 위치 알려주는 용도로 사용. 이러한 인덱스는 자동으로 생성되지 않으며, 별도의 DDL 이용하여 생성

  • 기본키 생성 시 추가한 컬럼은 기본키 생성할 때 자동으로 기본키 인덱스 생성됨
  • 예 : 일련번호를 기본키로 하는 경우, 일련번호에 대한 인덱스는 자동으로 생성되며 생년월일, 이름, 출생지 기준으로 하는 인덱스는 자동으로 생성 안됨
  • 인덱스 생성되어 있는 테이블 컬럼을 검색 조건으로 사용한다면 일부분을 검색(Range scan)하여 데이터 빠르게 검색 가능
    • 예 ) 기본키 인덱스가 생성된 일련번호 검색 시 인덱스 데이터 주소(Row_id) 통해 바로 테이블 해당 일련번호 튜플 검색
      • select * from table_great_men where 일련번호=1;
  • 인덱스 없는 '이름'을 비교한다면 해당 테이블 '이름' 컬럼에 인덱스가 없기 때문에 테이블 전체 내용 검색
    • select * from table_great_men where 이름='이순신';
  • 조건절에 '='로 비교되는 컬럼 대상으로 인덱스 생성하면 경우의 수 적어 검색 속도 높일 수 있음. 인덱스는 자동으로 생성되지 않기 때문에 사용자가 자주 사용하고 테이블의 경우 수가 적은 데이터 대상으로 인덱스 생성해야 함

 

* 인덱스 종류

유형 설명
순서 인덱스
(Ordered)
- 데이터가 정렬(Sorting)된 순서로 인덱스 생성 관리
- B-Tree 알고리즘 이용. 오름차순, 내림차순 지정
해시 인덱스
(Hash)
- 해시함수에 의해 직접 데이터에 키 값으로 접근
- 데이터에 접근 비용이 균일. 행 양에 무관
비트맵 인덱스
(Bitmap)
- 각 컬럼에 적은 개수 값이 저장된 경우 선택(OLAP성 업무에 적합)
- 수정 변경이 적은 경우 유용(예 : 성별, 직급, 색상 등)
함수 기반 인덱스
(Functional)
- 함수 기반으로 사전에 인덱스 설정하면 인덱스 기능 및 속도 향상
- 예) CREATE INDEX IDX_EMP01_ANNSAL ON EMP01(SAL*12);
단일 인덱스
(Simgled)
- 하나의 컬럼으로만 인덱스 지정
- 업무적 특성에 의해 주로 사용되는 컬럼 하나인 경우
결합 인덱스
(Concatenated)
- 복수개 컬럼 이용하여 인덱스 지정
- 동시에 WHERE 조건으로 사용되는 빈도 많은 경우
클러스터 인덱스
(Cluster)
- 저장된 데이터 물리적 순서에 따라 인덱스 생성
- 특정 범위 검색 시 유리 (예:일자구간)
320x100

댓글