본문 바로가기

Windows Developer/Oracle

[Oracle] 인덱스 란?



         [인덱스 란?]
  • 인덱스는 일반 테이블이나 클러스터에서 쓰여지는 선택적인 객체로서, 오라클 데이터 베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조.
  • 옵티마이저가 최적의 경로를 결정하기 위해 사용하는 요소(Factor)
  • 테이블 로우(Row)에 하나씩 대응되는 별도의 객체(Object)
  • 인덱스는 하나의 테이블에 여러개를 지정할 수 있고, 하나의 컬럼은 여러개의 인덱스에 포함 될 수도 있다.
  • 테이블과 무관하게 생성 및 삭제를 독립적으로 할 수 있다.
  • 자동 인덱스 : 프라이머리 키 또는 UNIQUE 제약조건에 의해 자동적으로 생성되는 인덱스
  • 수동 인덱스 : CREATE INDEX 명령을 실행해서 만드는 인덱스.




         [인덱스의 구분]

      1. 논리적 인덱스
  • 단일열, 복합, 유일, 비유일, 함수기반 인덱스
      2. 물리적 인덱스
  • B-tree index : 인덱스 대상의 해당 컬럼의 중간 값을 찾아 root-level로 등록하고 작은 값에 대한 정보와 큰 값에 대한 정보를 대칭형으로 저장하는 방식의 인덱스, 인덱스의 저장 모양이 나무와 비슷하다고 하여 b-tree 인덱스라 부른다.
  • 내림차순 index : 기본 구조는 B-tree 인덱스와 동일, 가장 큰 값을 앞에다 저장하고 가장 작은 값을 뒤부분에 저장하여 최근의 값을 좀 더 빠르게 검색하기 위한 목적의 인덱스
  • 역방향 인덱스 : 기본 구조는 B-tree 인덱스와 동일, 인덱스 케이블에 입력되는 값들을 뒤집어 받아들여 해당 값들에 대한 연속적인 삭제 작업이 발생하더라도 어느 한쪽 블록에서의 데이터가 삭제되는 현상을 막을 수 있는 인덱스.
  • bitmap index :  인덱스에 저장된 컬럼의 값들을 binary화 하여 저장하는 방법
  • bitmap join index : 기본 구조는 bitmap인덱스와 동일, 두개 이상의 테이블의 조인 결과에 대해 정의되어 생성된 인덱스
  • IOT index : 일반적인 인덱스와 달리 인덱스가 독립적인 저장구조를 가지고 있는 것이 아니고 테이블 자체를 인덱스 형태로 가지고 있는 인덱스

'Windows Developer > Oracle' 카테고리의 다른 글

[oracle] %TYPE과 %ROWTYPE  (1) 2011.02.09
[Oracle] 인덱스의 구조  (0) 2011.01.08
[Oracle] 명시적 커서와 암시적 커서  (1) 2011.01.07
[Oracle] OUTER JOIN  (1) 2011.01.07
[Oracle] NON-EQUJOIN  (0) 2011.01.07