zoukankan      html  css  js  c++  java
  • 位图索引

    前言

       这两天在家看《数据库概论》,讲到索引,除了我经常见到的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,表示该表的第三行数据就是我们需要查询的结果。

     位图索引使用条件

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

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

  • 相关阅读:
    怎样把Maven项目共享为传统Web项目
    伸冤人
    Maven依赖
    Maven常用插件参数
    Maven默认周期与插件
    MySQL Connector_J_5.1.34_2014.10
    MyEclipse2015对Javascript自动提示的终极支持
    Struts Convention Plugin 流程 (2.1.6+)
    Maven,预加载资源文件
    Myeclipse2014 自带的报表功能 与 Eclipse BIRT
  • 原文地址:https://www.cnblogs.com/juanzhi/p/12631675.html
Copyright © 2011-2022 走看看