10.5.2 索引组织表的创建

创建索引组织表的命令是CREATE TABLE。例如,下面的语句用于创建索引组织表employee。


SQL>CREATE TABLE employee(

empno number(4)PRIMARY KEY,

ename varchar(10),

sal number(7,2),

deptno number(2),

photo blob)

ORGANIZATION INDEX

TABLESPACE users

PCTTHRESHOLD 20

INCLUDING deptno

OVERFLOW TABLESPACE SYSTEM;


在创建索引组织表时,需要通过PRIMARY KEY关键字定义一个主键。如果主键只包含一个列,则可以在列级或表级定义,如果包含多个列,则必须在表级定义。为了说明该表为索引组织表,在CREATE TABLE命令中需要使用ORGANIZATION INDEX子句。

在CREATE TABLE命令中还可以使用以下子句:

·TABLESPACE:指定表所在的表空间,表与溢出区可以位于不同的表空间中。

·PCTTHRESHOLD:指定一个百分数,例如20。当表中非主键列的数据超过数据块大小的这个比例时,一部分非主键列将被移动到溢出区中。

·OVERFLOW TABLESPACE:指定溢出区所位于的表空间。

·INCLUDING:指定表中的一个列,当非主键列的数据超过数据块大小的指定比例时,该列之后的所有非主键列将被移动到溢出区中,而该列及之前的非主键列和主键列将仍然保留在原来的表中。

为了加快索引组织表的查询速度,应该把那些不经常被访问的列移动到溢出区中。在创建表时,应该合理安排各个列的顺序,并指定一个合适的百分比和一个分界点,使经常被访问的列确实能被存储在原来的表中,而不经常访问的列在某个时刻可以被移动到溢出区中。