ORACLE堆表和索引组织表IOT优缺点

本文对比了堆表和索引组织表的特点及优缺点,并提供了具体的测试案例,展示了不同类型的表在数据存储效率方面的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

堆表:

缺点:

主键索引和表数据分离,增加数据所占用空间。可能主键索引的所占用的空间大于该表所对应的空间

添加或者修改索引字段时需要维护索引,索引还会产生日志。

增加IO次数(通过索引的rowid来查找rowid对应块)。

数据会按照插入行所需要的空间大小按照一定顺序查找所需要的位置,没有一定顺序。

优点:

容易维护,

如果直接获取主键信息并且条件中含有字段除了主键字段外没有其他的字段,可以直接查询索引数据

索引组织表:

缺点:

优点:

主键索引和表数据存储在一起,并且如果主键索引字段所占的整行的比例非常大,节省的空间非常明显。

数据会按照一定顺序存储。

如果根据主键获取对应的行,读取的块会尽可能的少。因为相同的主键的值都存储在一起(相同主键的行数据插入彼此靠近的地方),减少物理IO和逻辑IO。


测试用例

创建索引表

create table  IOT_t(
id number,
owner varchar2(30),
object_name varchar2(30), 
object_id varchar2(30) ,
constraint prk_IOT_t primary key(id,owner,object_name) ) 
organization   index ;
insert into IOT_t
   select rownum id, t.owner,t.object_name,t.object_id from all_objects t ;


创建堆表
   create table  heap_t(
id number,
owner varchar2(30),
object_name varchar2(30), 
object_id varchar2(30) ,
constraint prk_heap_t primary key(id,owner,object_name) ) ;
insert into heap_t
   select rownum id, t.owner,t.object_name,t.object_id from all_objects t ;

索引组织表测试结果



堆表测试结果


明显的物理读一些,这些物理读就是通过索引IO产生的


create table iot_t1 (id  number,x varchar2(100),y varchar2(200), constraint prk_iot_t1 primary key (id )) 
organization index 
pctthreshold 10 including x overflow ;

如果插入行大于这个数据块的10%,这时剩下的部分会放在一处段里面,将id、x列放在索引表段中。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值