2013년 11월 5일 화요일

[오라클 인덱스]Oracle10g Index-Organized Tables(IOT)

[오라클 인덱스]Oracle10g Index-Organized Tables(IOT)


Index-Organized table(IOT)은 모든 테이블의 데이터를 B-트리 인덱스 구조로 저장하여 인덱스와 테이블이 결합된 형태로 저장 된다고 생각하면 되는데 B-Tree 인덱스 구조 내에 저장되는 테이블 구조 라고 보시면 되겠습니다.

오라클 이전 버전에서는 컬럼 값의 범위나 HASH값 등에 의해 Index-Organized 테이블에 대해 파티션을 나누었는데, 물론 파티셔닝 컬럼은 primaey key 컬럼의 subset이어야 하구요… 

오라클 10g 이후 list method에 의해 파티션을 나눌 수 있게 했는데 아래에 list mthod를 이용한 IOT를 위한 파티션을 나누는 예제를 소개하니 참고하세요~

아래 including구는 state_cd 이후의 모든 컬럼은 overflow segment에 저장되어야 한다는 의미 입니다.

SQL> CREATE TABLE state_sales(
2 acct_no NUMBER(5),
3 acct_name VARCHAR2(30),
4 amount_of_sale NUMBER(6),
5 state_cd varchar2(2),
6 sale_details VARCHAR2(1000),
7 PRIMARY KEY (acct_no, acct_name, state_cd) )
8 ORGANIZATION INDEX
9 INCLUDING state_cd
10 OVERFLOW TABLESPACE users
11 PARTITION BY LIST (state_cd)
12 (
13 PARTITION reg_east VALUES ('MA','NY','CT','NH'),
14 PARTITION reg_west VALUES ('CA', 'AZ', 'NM','OR'),
15 PARTITION reg_south VALUES ('TX','KY','TN','GA'),
16 PARTITION reg_central VALUES ('OH','ND','SD','IA'),
17 PARTITION reg_null VALUES (NULL),
18 PARTITION reg_unknown VALUES (DEFAULT)
19* )

댓글 없음:

댓글 쓰기