ORACLE堆表和索引组织表IOT优缺点
2013-11-27 22:24
411 查看
堆表:
缺点:
主键索引和表数据分离,增加数据所占用空间。可能主键索引的所占用的空间大于该表所对应的空间
添加或者修改索引字段时需要维护索引,索引还会产生日志。
增加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列放在索引表段中。
缺点:
主键索引和表数据分离,增加数据所占用空间。可能主键索引的所占用的空间大于该表所对应的空间
添加或者修改索引字段时需要维护索引,索引还会产生日志。
增加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列放在索引表段中。
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle 10g R2不能使用EM的问题
- PreparedStatement中in子句的处理
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- 数据库自动备份脚本
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ORACLE LATERAL-SQL-INJECTION 个人见解
- Oracle Connect to Idle Instance解决方法
- oracle sys_connect_by_path 函数 结果集连接
- Oracle捕获问题SQL解决CPU过渡消耗
- oracle dba 应该熟悉的命令
- Oracle11.2 命令行手工最简创建数据库的过程
- Oracle 数据库自动存储管理-安装配置
- 基于oracle中锁的深入理解
- Oracle 数据库 临时数据的处理方法