블로그 이미지

데이터베이스(Database) 인덱스(Index) 개념

2013. 8. 5. 21:17

DBMS의 Index

: 데이터베이스에서 테이블과 클러스터에 연관되어 독립적인 저장 공간을 보유하고 있는 객체(object)이다. 

사용자는 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위하여 인덱스를 생성하고 사용한다. 


DB에서 자료를 검색하는 두 가지 방법

FTS(Full Table Scan) : 테이블을 처음 부터 끝까지 검색하는 방법

Index Scan : 인덱스를 검색하여 해당 자료의 테이블을 액세스 하는 방법.


인덱스의 종류

가. 논리적 구분에 따른 인덱스 

: 칼럼의 수와 칼럼의 종류에 의한 인덱스의 구성

    a. Single Column Index 

        한 개의 컬럼으로 생성된 인덱스

    b. Composite Index

  두 개 이상의 컬럼으로 생성된 인덱스

  최대 32개까지 컬럼을 조합가능하나 일반적으로 10개 이하의 컬럼 조합으로 생성

    c. Unique Index

        모든 Unique 및 기본 키 제약조건 생성시 자동으로 생성

    d. Non-Unique Index

        중복된 컬럼을 가질 수 있는 Index

    e. Function-based Index

        인덱스에 포함된 1개 이상의 컬럼이 함수 또는 수식을 사용하여 생성된 경우를 말하며 인덱스로 저장되기         전에 값이 계산된다.

        Function-Based 인덱스는 B-tree 또는 Bitmap Index로 생성된다.

  Function-Based 인덱스를 액세스할 경우 오라클 서버는 SELECT 문이나 DELETE 문을 수행할 때 수식을 계산할 필요가 없다. 

 INSERT 문이나 UPDATE 문을 수행할 때 수식을 계산하여 인덱스에 저장한다.

 오라클의 경우 버전 8.1.X부터 사용할 수 있다.



나. 물리적 구분에 따른 인덱스

:

    a. B-tree 구조 인덱스

        일반적으로 생성되는 인덱스는 거의 대부분이 B-tree 구조의 인덱스로 생성된다.

        하나의 테이블에 인덱스를 많이 만들면 UPDATE, DELETE 작업의 실행 속도가 늦어진다.

        1개의 테이블에는 3~4개의 인덱스가 적당하다.

    b. Bitmap 인덱스

  인덱스된 컬럼의 정보를 0과 1의 값으로 표현하여 데이터를 검색할 때 사용되는 SQL 문의 WHERE 절에 정의된 AND, OR 연산자에 의해 AND 연산, OR 연산을 실행하여 데이터를 검색하는 방법이다.

  인덱스한 컬럼값의 변화가 거의 없어야 한다. 인덱스 컬럼값의 변화가 발생하면 테이블 전체 인덱스 데이터에 대해 인덱스를 다시 생성해야 하는 비용이 추가 된다.

    c. Cluster 인덱스

       인덱스로 작성된 컬럼의 컬럼값이 테이블에 순서대로 저장되는 방법으로, 일반적으로 인덱스가 생성되더라도         테이블에 영향을 끼치지 않고 생성되는 데 비하여, 클러스터 에비르은 클러스터 인덱스가 없이는 테이블에         데이터가 입력, 조회, 수정, 삭제 등 어떠한 작업도 할 수 없다.

       컬럼값이 다량 범위의 데이터일 경우 해당 컬럼의 다량 데이터에 대한 검색(LIKE, BETWEEN)을 자주하는         경우에 생성한다.

ORDER BY, GROUP BY, UNION, DISTINCT가 자주 발생하는 컬럼의 경우 생성한다.

'컴퓨터 > 이론' 카테고리의 다른 글

[Linux] 프로세스 관련 명령어  (0) 2014.05.18
데이터베이스(Database) 인덱스(Index) 개념  (0) 2013.08.05
소프트웨어 버전 규칙  (0) 2013.05.31
CPU와 MCU의 차이점 (간단히)  (0) 2013.02.13