Index-Organized Tables은 B+ Tree 인덱스 테이블의 일종으로서 인덱스 entry에 레코드 포인터가 아닌 레코드 값 전체가 저장된 인덱스 테이블이다. 원래 인덱스 entry에는 기존 테이블의 레코드를 가리키는 레코드 포인터가 저장되지만, IOT는 레코드 포인터 대신 레코드 값 전체를 저장하기 때문에 기존 테이블이 필요하지 않는다. 트리 노드 조건도 기존 B+ Tree와 동일하게 모든 leaf 노드는 반절 이상 값이 차있어야 하고, search key의 삽입/삭제도 기존과 동일하게 처리할 수 있다. 일반적으로 테이블의 기본키가 IOT의 search key로 되고 이 순서에 대해 정렬된다.
IOT는 네트워크 상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 조회할 수 있는 기능을 가진 앱에 적합하다.
인덱스 테이블만 조회하면 되기 때문에 기본키에 대한 검색이 빨라진다.
기본키에 대해 정렬되어 있기 때문에 기본키 범위 검색이 빠르다.
원래 테이블을 따로 저장하지 않으니 공간이 절약되고, 레코드 삽입/수정/삭제 시 인덱스 테이블만 수정하면 된다.
테이블에 대한 모든 작업을 할 수 있다. 그리고 키 압축, 오버플로 공간 지원, secondary 인덱스 테이블도 지원한다.
secondary 인덱스 테이블에 영향을 주지 않고도 인덱스 테이블을 온라인으로 재편성할 수 있다.
CREATE TABLE table_name (
column_1 data_type column_constraint,
column_2 data_type column_constraint,
...
primary key(column, ...),
foreign key(column, ...),
table_constraint
)
ORGANIZATION INDEX
TABLESPACE admin_tbs
PCTTHRESHOLD 20
OVERFLOW TABLESPACE admin_tbs2;