Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32398
  • 博文数量: 5
  • 博客积分: 586
  • 博客等级: 中士
  • 技术积分: 195
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-25 10:43
文章分类
文章存档

2010年(1)

2009年(2)

2008年(2)

我的朋友

分类: Oracle

2008-05-27 23:10:01

(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表中的行的位置是在不断变化的(例如插入新的行,有可能带来其它行的位置移动)
 
 
阅读(1916) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~