Atitit 索引技术--位图索引

Atitit 索引技术--位图索引

 

索引在数据结构上可以分为三种B树索引、位图索引和散列索引

存储原理

编辑

位图索引对数据表的列的每一个键值分别存储为一个位图,Oracle对于不同的版本,不同的操作方式,数据生成均有差别.

对于8i,9i,

下面分3种方式来讨论数据的插入:

a.一次插入一行,插入多行后,一次提交;

b.每插入一行,提交一次;

c.批量插入方式,一次提交;

对于第一种方式,观察位图索引的变化情况.

a.假设插入8行相同键值的数据,如果以每行方式插入,然后一次提交,则会生成8个位图

SQL> Insert Into H病人挂号记录(Id,No,号别,执行人) Values(1,'G000001',1,'1');

1 row inserted

 

基本信息

编辑

.什么是位图索引

位图索引是一种使用位图的特殊数据库索引。

主要针对大量相同值的列而创建(例如:类别,操作员,部门ID,库房ID),

索引块的一个索引行中存储键值和起止Rowid,以及这些键值的位置编码,

位置编码中的每一位表示键值对应的数据行的有无.一个块可能指向的是几十甚至成百上千行数据的位置.

这种方式存储数据,相对于B*Tree索引,占用的空间非常小,创建和使用非常快.

当根据键值查询时,可以根据起始Rowid和位图状态,快速定位数据.

当根据键值做and,orin(x,y,..)查询时,直接用索引的位图进行或运算,快速得出结果行数据.

select count(XX) ,可以直接访问索引就快速得出统计数据.

创建语法很简单,就是在普通索引创建的语法中index前加关键字bitmap即可,例如:

create bitmap index H病人挂号记录_ix_执行人 on H病人挂号记录(执行人);

 

适用场合

编辑

1.位图索引Oracle数据库7.3版本中加入的,8i,9i企业版和个人版支持,标准版不支持.

2.基于规则的优化器无法使用Bitmap索引

3.适应于有大量重复值的列查询

4.对于8i,9i版本,不适用于单行插入,适用于批量插入的数据,

因为单行插入时,相同键值,每插入8行就会生成一行索引块中的位图,即使相同的值.

而批量插入时,相同键值只生成一个位图段.

5.由于并发DML操作锁定的是整个位图段的大量数据行,所以位图索引主要是用于OLAP应用,也可以用于OLTP中主要为读操作的表.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟"Bird Catcher 王中之王King of Kings 虔诚者Pious 宗教信仰捍卫者 Defender of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak

简称: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名:Emir Attilax Akbar bin Mahmud bin  attila bin Solomon Al Rapanui 

埃米尔 阿提拉克斯 阿克巴  马哈茂德  阿提拉 所罗门  阿尔 拉帕努伊   

常用名艾提拉(艾龙)   EMAIL:1466519819@qq.com

头衔:uke总部o2o负责人,全球网格化项目创始人,uke宗教与文化融合事务部部长,Uke部落首席大酋长,uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,奶牛科技cto uke波利尼西亚区大区连锁负责人,克尔格伦群岛连锁负责人,莱恩群岛连锁负责人,uke汤加王国区域负责人,。布维岛和南乔治亚和南桑威奇群岛大区连锁负责人。。

转载请注明来源:attilax的专栏   http://blog.csdn.net/attilax

--Atiend

 

 

posted @ 2016-12-13 17:54  attilaxAti  阅读(34)  评论(0编辑  收藏  举报