오라클 인덱스


인덱스

B-Tree 기반 인덱스

오라클은 B-Tree 기반의 인덱스를 사용한다.

B-Tree는 하나의 노드에 여러 값을 가질 수 있어 적절한 높이를 유지할 수 있고 항상 Leaf노드의 높이가 일정하게 유지되는 알고리즘으로 효율적인 균형을 유지한다.

클러스터형 인덱스

테이블 스캔

전체 테이블 스캔

전체 테이블 스캔 방식을 선택하는 이유는 다음과 같다.

여기서 주의해야할 것은 세번째 이유이다. 예를들면 부정조건문과 같은 조건이 있을 수 있다. 가능하다면 그러한 조건을 제거하는것이 좋을 것이다.

인덱스 스캔

인덱스 스캔의 종류

전체 테이블 스캔과 인덱스 스캔 방식의 비교

인덱스 스캔은 인덱스에 존재하는 레코드 식별자를 이용해서 검색하는 데이터의 정확한 위치를 랜덤 엑세스 한다. 따라서 한번의 I/O요청에 한 블록씩 데이터를 읽는다.

반면, 전체 테이블 스캔은 한번의 I/O 요청으로 여러 블록을 한꺼번에 읽는다.

테이블의 대부분의 데이터를 읽을때는 인덱스 스캔 방식으로 한블록씩 읽는것 보다 여러블록을 함께 읽는것이 효율적일 것이다.

참조

책 : SQL 전문가 가이드 2013 Edition , KODB(한국데이터베이스진흥원)

[top]

comments powered byDisqus