想请教各位大侠能不能给具体讲下什么是 对组织表, 什么是 索引组织表。是深入、具体的给讲下。最好能举个例子说下,谢谢!!

解决方案 »

  1.   

    不是 组织表,是组织表!(1) 在oracle中,当我们用下面的语句建一个表时:
    create table emp
    as
    select object_id   empno,
           object_name ename,
           created     hiredate,
           owner       job
    from all_objects
    这是emp称为堆组织表。
    然后为emp表加上主键:alter table emp add constraint emp_pk primary key(empno)
    此时emp仍称为堆组织表。但是这些oracle会为emp表建立基于B+树的索引,不过只对empno这一列的数据进行索引,这点同sql server不一样,在sql server中,当为一个表建立主键,相当于对主键列进行索引,同时将非主键列的数据也带到了索引中。
    (2) 在oracle 中,还有一类IOT(index organization table)表。例如:
    CREATE TABLE iot_emp
       (        "EMPNO" NUMBER PRIMARY KEY,
            "ENAME" VARCHAR2(30),
            "HIREDATE" DATE,
            "JOB" VARCHAR2(30)
    )
    organization index --指定表为IOT表
        IOT表是将表中的行按索引列的顺序组织,注意IOT表不会像sql server中的聚簇索引那样,会占一些空间,除此以前,IOT同SQL Server的簇索引是一样的,它们都是通过B+树来组织。
        IOT必须要有主键列,不然不能创建成IOT表。
        IOT表的rowid是逻辑上的,因为IOT表中的行的位置是在不断变化的(例如插入新的行,有可能带来其它行的位置移动)
      

  2.   

    那再问下啊,那query这3种表的时候,都是怎么个过程呢?
    alter table后加的索引,和后来IOT的那种索引有什么区别啊?
    再给解释下吧,谢谢啊!