对组织表 索引组织表 问题

alj317 2011-08-23 12:04:04
想请教各位大侠

能不能给具体讲下什么是 对组织表, 什么是 索引组织表。

是深入、具体的给讲下。

最好能举个例子说下,谢谢!!
...全文
43 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
alj317 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luoyoumou 的回复:]
不是 对组织表,是堆组织表!

(1) 在oracle中,当我们用下面的语句建一个表时:
create table emp
as
select object_id empno,
object_name ename,
created hiredate,
owner job
from all_objects
这是emp称为堆组织表。
然后为emp表加上主键:alter……
[/Quote]


那再问下啊,那query这3种表的时候,都是怎么个过程呢?
alter table后加的索引,和后来IOT的那种索引有什么区别啊?
再给解释下吧,谢谢啊!
luoyoumou 2011-08-23
  • 打赏
  • 举报
回复
不是 组织表,是组织表!

(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表中的行的位置是在不断变化的(例如插入新的行,有可能带来其它行的位置移动)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧