어느 가을날의 전환점

ORACLE|인덱스(Index) 본문

Database/Oracle

ORACLE|인덱스(Index)

어느가을빛 2010. 7. 21. 19:29

※ Index를 생성하는 것이 좋은 Column
① WHERE절이나 join조건 안에서 자주 사용되는 컬럼 
② null 값이 많이 포함되어 있는 컬럼 
③ WHERE절이나 join조건에서 자주 사용되는 두 개이상의 컬럼들

◈ 다음과 같은 경우에는 index 생성이 불필요 합니다. 
① table이 작을 때 
③ 테이블이 자주 갱신될 때  
※ B-tree(binary search tree)
-. 오라클 인덱스는 B-tree(binary search tree)에 대한 원리를 기반으로 하고 있습니다. 
-. B-tree인덱스는 컬럼안에 독특한 데이터가 많을 때 가장 좋은 효과를 냅니다. 

 이 알고리즘 원리는 
 ① 주어진 값을 리스트의 중간점에 있는 값과 비교합니다.  
    만약 그 값이 더 크면 리스트의 아래쪽 반을 버립니다.  만약 그 값이 더 작다면 위쪽 반을 버립니다. 
 ② 하나의 값이 발견될 때 까지 또는 리스트가 끝날 때까지 그와 같은 작업을 다른 반쪽에도 반복합니다. 

(1) Bitmap 인덱스 
  • 비트맵 인덱스는 각 컬럼에 대해 적은 개수의 독특한 값이 있을 경우에 가장 잘 작동합니다. 
    그러므로 비트맵 인덱스는 B-tree 인덱스가 사용되지 않을 경우에서 성능을 향상 시킵니다.
  • 테이블이 매우 크거나 수정/변경이 잘 일어나지 않는 경우에 사용할 수 있습니다. 
    예를 들어 여권 기록을 포함하고 있는 테이블의 성별 열이나 결혼 여부 열의 경우에는 B-트리 인덱스 보다는 비트맵 인덱스가 더 유리할 것입니다.
  • 질의문이 OR 연산자를 포함하는 여러 개의 WHERE 조건을 자주 사용할 때 유리합니다
(2) Unique 인덱스 
  • Unique 인덱스는 인덱스를 사용한 컬럼의 중복값들을 포함하지 않고 사용할 수 있는 장점이 있습니다. 
  • 프라이머리키 와 Unique 제약 조건시 생성되는 인덱스는 Unique 인덱스입니다. 

(3) Non-Unique 인덱스 
  • Non-Unique 인덱스는 인덱스를 사용한 컬럼에 중복 데이터 값을 가질 수 있습니다. 

Comments