oracle的表分类

1、堆组织表,就是普通的标准数据库表,数据以堆的方式管理。堆其实就是一个很大的空间,会一种随机的方式管理数据,数据会放在合适的地方。

例如建立一张表

create table t(id int,name varchar2(20));

插入三条记录

insert into t values(1,'a');

insert into t values(2,'b');

insert into t values(3,'c');

之后删除记录b;

delete from t where id=2;

再插入记录d

insert into t(4,'d');

d记录就可能放在记录b的位置。

2、索引组织表,存储在一个索引结构的表。表中的数据按主键存储和排序。如果只通过主键访问一个表,就可以考虑IOT表。父子关系表中,如果是一对多关系,经常根据父表查找子表,子表可以考虑IOT表。

3、索引聚簇表,聚簇是指一个或多个表的组。有相同聚簇值的行会相邻的物理存储。oracle数据字典就大量使用这种表,这样可以将表、字典信息存储在一起,提高访问效率。如果数据只要用于读,需要频繁地把一些表的信息连结在一起访问,可以考虑索引聚簇表。但注意:聚簇会导致dml、全表扫描的效率底下,还有就是索引聚簇表是不能分区的。

4、散列聚簇表,类似聚簇表,不使用B*树索引定位数据,而使用内部函数或者自定义函数进行散列,然后使用这个散列值得到数据在磁盘上的位置,散列聚簇是一个高cup、低IO操作,如果经常按hashkey查找数据,可以考虑散列聚簇表。

5、有序散列聚簇表,这种表是10g中新增的,同时兼有索引聚簇表、散列聚簇表的一些特性,使用这个结构是应该考虑散列聚簇表同样的问题,同时要考虑数据的有序到达。

6、嵌套表,嵌套表与传统的父子表模型很相似,但其里面的数据元素是一个无序集,所有数据类型必须相同,很少用嵌套表来存储实体数据,大多数在Pl/Sql代码中使用。

7、临时表,临时表用来保存事务、会话中间结果集。临时表值对当前会话可见,可以创建基于会话的临时表,也可以创建基于事务的临时表。

1)、基于会话的临时表:

create global temporary table temp_s(id int,name varchar2(20)) on commit preserve rows;

2)、基于事务的临时表:

create global temporary table temp_t(id int,name varchar2(20)) on commit delete rows;

如果应用中需要临时存储一个行集合供其他表处理,可以考虑临时表。

8、对象表,对象表用于实现对象关系模型,很少用来存储数据,可以在PL/SQL用来得到对象关系组件。

9、外部表,外部表可以把一个操作系统文件当作一个只读的数据库表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值