【老贝伏枥】6.Bitmap index

浏览: 1864

6、Bitmap Index(位图索引)

  组织形式与Btree索引相同,也是一棵平衡树。不同点是叶子节点里存放索引条目的方式不同。

bitmap.jpg

  用户表T_User_Info里所有的记录在列UserType上只具有三个值:01、02和03。在列UserType上创建位图索引以后,则叶子节点的内容如上图所示。可以看到位图索引只有三个索引条目,也就是每个UserType列的值对应一个索引条目。位图索引条目上包含表第一条记录的ROWID以及最后一条记录的ROWID,最后一部分则是由多个bit位所组成的bitmap,每个bit位就对应一条记录。‘1’代表索引在该记录行存在,‘0’代表无。

  当发出where UserType='01'这样的SQL语句时,DB会去搜索'01'所在的索引条目,然后扫描该索引条目中的bitmap里所有的bit位。第一个bit位为 1,则说明第一条记录上的UserType='01',于是返回第一条记录所在的ROWID,再去定位记录行。

  语法:create bitmap index idx_bm_emp1_deptno on emp1(deptno);

  总结:

  •   位图索引适合唯一值很少的列,也就是重复值很多的列。
  •   如果被索引的列经常被 更新的话,则不适合使用位图索引。也就是适合OLAP,不适合OLTP
推荐 1
本文由 贝克汉姆 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册