聚簇索引和聚簇表是一回事吗?聚簇索引中存在实际的表数据,那么如果在一个表上建立聚簇索引,数据库中这个表的数据会不会重复存储,即原表中有数据,聚簇表中也有这部分数据。我对聚簇索引和聚簇表理解的不太清,问的有点混乱,还望大侠帮忙看看,非常感谢!

解决方案 »

  1.   

    ORACLE只有索引组织表、索引聚簇表、散列聚簇表。
    没有聚簇索引,这是sqlserver的东西。
      

  2.   

    oracle不存在类似sql server的聚簇index。
    oracle的 cluster table是基于cluster的表。
    cluster是oracle的一种对象。
    要创建cluster table需要在cluster上创建index。
    多个表可以公用一个cluster,数据是基于cluster共有的,不会重复存储,这也是使用cluster表的目的,减少多表访问的IO。
    具体创建cluster table流程如下:
    CREATE CLUSTER CLUST_A(COL VARCHAR2(30)) SIZE 1024; 
    CREATE INDEX i_clust_test1 ON CLUSTER clust_a;
    CREATE TABLE clust_tab1(username varchar2(30),user_id number) CLUSTER CLUST_A(username);
    insert into clust_tab1 select username,user_id from dba_users;