首页 > 其他 > 详细

位图索引

时间:2020-04-04 14:43:09      阅读:57      评论:0      收藏:0      [点我收藏+]

前言

   这两天在家看《数据库概论》,讲到索引,除了我经常见到的B+树索引,HASH索引,还有顺序文件上的索引,位图索引。

应用场景

  有张表名为table的表,由三列组成,分别是姓名、性别和婚姻状况,其中性别只有男和女两项,婚姻状况由已婚、未婚、离婚这三项,该表共有100w个记录。现在有这样的查询:     select * from table where Gender=‘男’ and Marital=“未婚”;

技术分享图片

 

  1)不使用索引:一行一行遍历,效率降低

  2)B+树索引:此索引适合重复元素较少的字段,性别只有两种值,对于B+树索引并不适合,在查询的时候数据库往往会放弃索引。

位图索引出场

  对于性别,形成两个字符串,男是10100...,女是01011...

技术分享图片

 

   对于婚姻状况,形成三个向量

技术分享图片

  当我们使用查询语句“select * from table where Gender=‘男’ and Marital=“未婚”;”的时候 首先取出男向量10100...,然后取出未婚向量 

  00100...,将两个向量做and操作,这时生成新向量00100...,可以发现第三位为1,表示该表的第三行数据就是我们需要查询的结果。

技术分享图片

 

 位图索引使用条件

  位图索引适合只有几个固定值的列,但是适合静态数据,不适合频繁更新的数据。

  原因:索引需要维护,频繁更新的时候,同时也要加行锁,这个时候会加行锁。

 

位图索引

原文:https://www.cnblogs.com/juanzhi/p/12631675.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!