http://space.itpub.net/?uid-13062352-action-viewspace-itemid-614553
oracle B-Tree和Bitmap索引对比详解
B树索引是所有大型关系数据库毕用的技术,也是oracle数据库默认的索引技术。
基数:指的是你要创建索引的列中所包含的不同键值的数量。例如我们的列是性别,那么它的键值就是男、女所以你的索引基数是2.
oracle中每个表的行都有一个rowid,用于标记这个行在数据库中的位置。
关于索引:
B-TREE索引,结构如下:
root
/ | \
branch1 ........
/|\ ......................
leaf1......
leaf节点的结构是这样的:
|索引头|列长度|列内容|rowid(s)|
一个叶子节点的大小大概是8192*8bit,因此一个字段的长度即使是50,那么一个节点大概能分成100个子节点,那么100万的记录,也只需要3级节点即可索引完毕,因此一般b-tree的深度不超过4级,这样根据b-tree来查找一条记录,最多只需遍历4个节点找到rowid,再根据rowid查找磁盘即可得到最终记录数据。
对某列查询的结果集记录数如果通常都小于7%,则应该在该列添加索引。对b-tree来说,where xx is null条件是不会利用索引的,因此建议这种列应该设置默认值,以避免该列的值存在null的情况,同样group by 中如果该列有null索引也可能无效。
bitmap索引:
bitmap索引的结构也是树形结构,但是叶子节点的结构与b-tree不一样。bitmap叶子节点的结果大概如下:
<key1 start-rowid end-rowid bitmap>
<key2 start-rowid end-rowid bitmap>
......
其中bitmap的内容是110010100011100001这样的01组合形式,它的长度与start-rowid和end-rowid之间包含的rowid数量一致。这样假设范围内第9个rowid对应列的内容是key1,那么kei1对应的bitmap中第9个字符的值就是1,否则就是0。同样每个块的大小是8192*8,那么一个bitmap索引的叶子节点大概能索引10000条记录。
bitmap索引对null的字段依然有效,具体null的值在bitmap中是取0还是专门有个keyX的值是null来区分需要再查证。bitmap索引对or条件的查询效果非常好,它不适应与索引列的值经常变化的情况,如果索引列的值经常变化,那么对bitmap索引将是灾难性的,因为它要锁定所有相关的叶子节点所在的块来更新bitmap的值,它适用于决策支持系统。
相关推荐
现在,我们知道优化器如何对这些技术做出反应,清楚地说明 bitmap 索引和 B-tree 索引各自的最好应用。 在 GENDER 列适当地带一个 bitmap 索引,在 SAL 列上创建另外一个位图索引,然后执行一些查询。在这些列上,用...
oracle
在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等,其中最常用的是B*Tree索引和Bitmap索引。(1)、与索引相关视图查询DBA_INDEXES视图可得到表中所有...
开源项目-boljen-go-bitmap.zip,go-bitmap - Some simple bitmap utilities - Could someone please review SetAtomic?
开源项目-seiflotfy-s-bitmap.zip,S-Bitmap: Distinct Counting with a Self-Learning Bitmap (an equivalent to HyperLogLog) implemented in Go
jar包,官方版本,自测可用
2-9+bitmap在连续留存分析中的使用
其中,B-Tree 索引是最常用的索引类型,例如 MsSql 使用的是 B+Tree 索引,Oracle 使用的是 B-Tree 索引。Hash 索引在 MsSql 中内存表的默认索引方式。fulltext 全文索引,以单词为索引项。bitmap 位图索引,适合于...
索引的结构可以分为 B-tree 和 bitmap 两种,B-tree 索引适合范围查询,bitmap 索引适合等值查询。 _回滚段_ 回滚段是 Oracle 数据库中的一种数据结构,它保存数据的前像,保证数据读取的时间点一致性。Oracle 里...
Oracle8 数据库系统提供了多种类型的索引,包括 B 树索引、位图索引、簇索引等。 B 树索引是 Oracle8 数据库系统中最常用的索引类型。它是一种自平衡的树形结构,能够快速找到表记录。B 树索引可以自动建立在主码和...
而其中索引的使用又是经常碰到的一个调整优化的难题, 经常听到很多itpub上的同仁讨论使用bitmap index但是又不敢轻易使用它(害怕出现性能问题)。这里参考了Oracle文档,《Beginning Oracle Programming》及《Oracle...
3-8+BitMap在大数据精准营销中的应用
Oracle 11g 索引的详细解析!B-tree Index,反向索引,函数索引,bitmap 索引等等的详细介绍。
9-slice Bitmap scaling by ByteArray. Very useful for GUI!!
jar包,官方版本,自测可用
离线安装包,测试可用
bitmap-console-fonts-0.3-15.el6.noarch.rpm是centos工具包。