2013년 10월 29일 화요일

Oracle10g Index-Organized Tables Index-Organized table(IOT)은 모든 테이블의...


Oracle10g Index-Organized Tables


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* )

댓글 없음:

댓글 쓰기