1. 关于索引簇 索引簇是指使用索引定位簇健列数据的方法。如果用户需要经常执行连接查询显示主从表信息,应该将主从表组织到索引簇。
当使用索引簇存储表数据时,Oracle会将不同表的相关数据按照簇键值存放到簇段中。例如,当建立了索引簇DEPT_EMP,并将DEPT和EMP表组织到索引簇后,Oracle会按照簇健DEPTNO存放相关数据。
2. 选择簇表应该考虑的因素
1) 相关表主要用于执行SELECT操作,而不是INSERT和UPDATE操作。
2) 经常需要在相关表之间执行连接操作。
3) 选择合适的簇健列,如果经常使用多列连接查询,则应该基于多列定义复合簇健
4) 指定快空间使用参数
5) 指定簇键值和相关行的使用空间
6) 指定簇和簇索引的存放位置
3. 建立索引簇:
CREATE CLUSTER dept_emp_clu(deptno NUMBER(3))
PCTFREE 20 PCTUSED 60
SIZE 500 TABLESPACE user01;
解释:簇健列为deptno,PCTFREE关键字用于指定数据块内为UPDATE操作所预留空间的百分比,PCTUSED用于指定将数据块标记为可重新插入数据的已用空间最低百分比,SIZE用于指定每个粗键值相关行数据所占用的总计空间,其默认值为一个数据块的尺寸,TABLESPACE用于指定簇段所在的表空间。
4. 建立簇表
主表建立
CREATE TABLE department(
id NUMBER(3) PRIMARY KEY,
dname VARCHAR2(14),loc VARCHAR2(14)
)CLUSTER dept_emp_clu(id)
从表建立
CREATE TABLE employee(
eno NUMBER(4) PRIMARY KEY,
ename VARCHAR2(14),
job VARCHAR2(9),
dept_id NUMBER(3) REFERENCES department
)CLUSTER dept_emp_clu(dept_id)
建立簇索引
CREATE INDEX dept_emp_idx ON CLUSTER dept_emp_clu
TABLESAPCE user02;