oralce索引组织表与聚簇表的区别

索引组织表,就是记录在叶子节点上,记录的存放是按主键顺序存放的,堆表的存放是无序的。mysql中的表就是索引组织表。
索引组织表有下面的优点:
1主键上的快速随机访问,记录的操作只需要变更索引结构即可
2主键上快速的范围扫描
3更小的存储空间,堆表上的主键是存了2份的
iot表适用于oltp中,oracle中的索引组织表有OVERFLOW 这个东西,建表语句如下:
CREATE TABLE admin_docindex(
token char(20),
doc_id NUMBER,
token_frequency NUMBER,
token_offsets VARCHAR2(512),
CONSTRAINT pk_admin_docindex PRIMARY KEY (token, doc_id))
ORGANIZATION INDEX
TABLESPACE admin_tbs
PCTTHRESHOLD 20
OVERFLOW TABLESPACE admin_tbs2;

表示的是非键字段的大小超过了块大小的20%就放在admin_tbs2表空间的段中
including字句标识这个字段及以前的字段都放到跟key放到索引中,之后的字段都放到溢出区中,参考:
http://www.itpub.net/thread-1623421-1-1.html
具体的iot的说明参考:
http://blog.csdn.net/aoerqileng/article/details/38919713
在索引组织表上创建位图索引的时候,需要创建映射表,映射表主要是用来存放iot表的逻辑rowid和物理rowid的对应关系,通过位图索引访问表中的数据的时候,执行计划是先根据位图索引中的信息访问映射表,然后通过映射表去找iot的记录。
create table t_testmap(eno number primary key,ename varchar2(10)) organization index;
INSERT INTO t_testmap VALUES(1,’bai’);
SELECT * FROM user_tables;
这里写图片描述
在user_tables视图中看不到放到哪个表空间了
SELECT * FROM user_segments;
这里写图片描述
在user_segments视图中,看到了 一些系统命名的iot的段信息,并且段的类型是index
下面直接创建位图索引看看
这里写图片描述
下面创建带映射表的iot表

 create table t_testmap4(eno number primary key,ename varchar2(10)) organization index mapping table;
映射表的创建就是在创建iot表的时候加上了mapping table.

create bitmap index idx_map4 on t_testmap4(ename);在iot上面创建位图索引

select table_name,iot_name,iot_type from user_tables;

这里写图片描述
看到上面有个iot表对应的映射表,映射表是普通的堆表。
删除映射表
这里写图片描述
由于有位图索引,所以删除不掉。
先删索引,在删除映射表。
重建映射表:
alter table t_testmap4 move mapping table;

聚簇
表:
聚簇的概念是把一个或多个表物理的放在一起,因为他们共享一些列,就是经常关联查询。当表是聚簇一部分的时候,对应用是透明的,需要先创建聚簇,在创建表
CREATE CLUSTER emp_dept (deptno NUMBER(3))
SIZE 600
TABLESPACE users
STORAGE (INITIAL 200K
NEXT 300K
MINEXTENTS 2
MAXEXTENTS 20
PCTINCREASE 33);
建表
CREATE TABLE emp (
empno NUMBER(5) PRIMARY KEY,
ename VARCHAR2(15) NOT NULL,

deptno NUMBER(3) REFERENCES dept)
CLUSTER emp_dept (deptno);

CREATE TABLE dept (
deptno NUMBER(3) PRIMARY KEY, … )
CLUSTER emp_dept (deptno);
http://blog.sina.com.cn/s/blog_6bd7d94301014kji.html
iot表就是适合单表上按某个唯一字段做查询的情况
聚簇索引表就是适合 表关联,不经常变更的情况
日后做测试吧,懒

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值