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:指定表中的一个列,当非主键列的数据超过数据块大小的指定比例时,该列之后的所有非主键列将被移动到溢出区中,而该列及之前的非主键列和主键列将仍然保留在原来的表中。
为了加快索引组织表的查询速度,应该把那些不经常被访问的列移动到溢出区中。在创建表时,应该合理安排各个列的顺序,并指定一个合适的百分比和一个分界点,使经常被访问的列确实能被存储在原来的表中,而不经常访问的列在某个时刻可以被移动到溢出区中。