제1장 엑세스 효율의 향상
옵티마이저가 처리경로를 판단하는데 있어서 가장 중요한 요소
- 인덱스
- 클러스터
- 조인의 효율 향상
- 최적의 인덱스 판단
- 다중처리(Array processing)
- 부분범위처리(Partial range scan)
인덱스란?
- 인덱스는 일반 테이블이나 클러스터에서 쓰여지는 선택적인 객체로서, 오라클 데이터베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조.
- 옵티마이저가 최적의 경로를 결정하기 위해 사용하는 요소(Factor)
- 테이블 로우(Row)에 하나씩 대응되는 별도의 객체(Object).
- 인덱스는 생성시킨 컬럼의 값과 테이블 ROW의 ROWID 로 구성되어 있고, 이들간에 서로 정렬(Sort)되어 있다.
동일한 값이 여러 개 존재하면 같은 값의 인덱스 ROW는 다시 ROWID로 정렬되어 저장된다. - 인덱스는 하나의 테이블에 여러 개를 지정할 수 있고, 하나의 컬럼은 여러 개의 인덱스에 포함 될 수도 있다.
- 테이블과 무관하게 생성 및 삭제를 독립적으로 할 수 있다.
- 자동 인덱스 : 프라이머리 키 또는 UNIQUE 제약조건에 의해 자동적으로 생성되는 인덱스.
- 수동 인덱스 : CREATE INDEX 명령을 실행해서 만드는 인덱스.
인덱스의 구분
논리적 인덱스
- 단일열, 복합, 유일, 비유일, 함수기반 인덱스
물리적 인덱스
- b-tree_index.ppt : 인덱스 대상의 해당 컬럼의 중간 값을 찾아 root-level로 등록하고 작은 값에 대한 정보와 큰 값에 대한 정보를 대칭형으로 저장하는 방식의 인덱스, 인덱스의 저장 모양이 나무와 비슷하다고하여 B-tree 인덱스라 부른다.
- 내림차순 인덱스 : 기본 구조는 B-tree 인덱스와 동일, 가장 큰 값을 앞에다 저장하고 가장 작은 값을 뒤부분에 저장하여 최근의 값을
좀더 빠르게 검색하기 위한 목적의 인덱스
- 역방향 인덱스 : 기본 구조는 B-tree인덱스와 동일, 인덱스 테이블에 입력되는 값들을 뒤집어 받아들여 해당 값들에 대한
연속적인 삭제 작업이 발생하더라도 어느 한쪽 블록에서의 데이터가 삭제되는 현상을 막을 수 있는 인덱스.
- BITMAP-JOIN인덱스 : 기본구조는 BITMAP인덱스와 동일, 두 개 이상의 테이블의 조인 결과에 대해 정의되어 생성된 인덱스
- IOT 인덱스 : 일반적인 인덱스와 달리 인덱스가 독립적인 저장구조를 가지고 있는 것이 아니고 테이블 자체를 인덱스로 형태로
가지고 있는 인덱스