日期:2014-05-16  浏览次数:20504 次

聚簇 索引
群:127881306 
聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的。聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。一个表最多只能有一个聚簇索引。
   在Oracle当中,聚簇不是索引的组织形式,而是表的组织形式。多用于表之间的连接字段。 例:dept(deptno, ? dnma,e ? loc) ? 和表 ? emp(empno, ? ename, ? job, ? mgr, ? ... ? deptno), ? 常在deptno上进行连接,可以针对deptno字段建立聚簇,然后建立基于该聚簇的索引,并让两个表都使用上该聚簇。
CREATE CLUSTER
personnel( department_number NUMBER(2) )
SIZE 512 STORAGE (INITIAL 100K NEXT 50K);
CREATE TABLE emp (
empno NUMBER PRIMARY KEY,
ename VARCHAR2(10) NOT NULL
CHECK (ename = UPPER(ename)),
job VARCHAR2(9),
mgr NUMBER ,
comm NUMBER(9,0) DEFAULT NULL,
deptno NUMBER(2) NOT NULL )
CLUSTER personnel (deptno);

CREATE TABLE dept (
deptno NUMBER(2),
dname VARCHAR2(9),
loc VARCHAR2(9))
CLUSTER personnel (deptno);

CREATE INDEX idx_personnel ON CLUSTER personnel;

这样可以让两个表同时用上聚簇索引。保证两个表的记录按照depno值尽量存放到同一个物理块当中。