oracle9i:1.能否在表创建之后再创建一个聚簇索引?2.表中的字段为varchar2(长度固定),能否为此字段添加聚簇索引?3.创建聚簇索引的sql命令是什么?

解决方案 »

  1.   

    1.能否在表创建之后再创建一个聚簇索引?2.表中的字段为varchar2(长度固定),能否为此字段添加聚簇索引?3.创建聚簇索引的sql命令是什么?
    在Oracle当中,聚簇不是索引的组织形式,而是表的组织形式。多用于表之间的连接字段。
    e.g. dept(deptno, dnma,e loc) 和表 emp(empno, ename, job, mgr, ... deptno), 常在deptno上进行连接,可以针对deptno字段建立聚簇,然后建立基于该聚簇的索引,并让两个表都使用上该聚簇。create cluser emp_dept_cluster
    (deptno number(6))
    size 1024
    /
    create index emp_dept_cluster_idx
    on cluster emp_dept_cluster
    /
    create table dept
    (deptno number(6) primary key,
    dname varchar(14),
    loc varchar(14)
    )
    cluster emp_dept_cluster(deptno)
    /
    create table emp
    (empno number primary key,
    ename varchar(10),
    job varchar(9),
    ...
    deptno number(6) references dept(deptno)
    )
    cluster emp_dept_cluster(deptno)
    /这样可以让两个表同时用上聚簇索引。保证两个表的记录按照depno值尽量存放到同一个物理块当中。