Bitmap 索引简介及适用场景

bitmap索引就是用位图表示的索引,对列的每个键值建立一个位图。所以相对于b-tree索引,占用的存储空间非常小,创建和使用非常快。缺点是修改操作锁粒度大,不适合频繁更新。

如下图,bitmap索引将每个被索引的列的值作为KEY,使用每个BIT表示一行,当这行中包含这个值时,设置为1,否则设置为0。

在这里插入图片描述

bitmap索引适用场景

  • 建在值重复度高的列上,GP手册建议在100到100,000之间,如:职业、地市等。重复度过高则对比其他类型索引没有明显优势;重复度过低,则空间效率和性能会大大降低。
  • 特定类型的查询例如count、or、and等逻辑操作因为只需要进行位运算。如:通过多个条件组合查询,select count(*) from table where city = ’南京市’ and job = ’医生’ and phonetype = ‘iphone’ and gender =’男’。类似这种场景,如果在每个查询条件列上都建立了bitmap索引,则数据库可以进行高效的bit运算,精确定位到需要的数据,减少磁盘IO。并且筛选出的结果集越小,bitmap索引的优势越明显。
  • 适用于即席查询、多维分析等OLAP场景。如果有一张表有100列,用户会使用其中的20 个列作为查询条件(任意使用这20个列上的N的列),几乎没有办法创建合适的 b-tree 索引。但是在这些列上创建 20 个 bitmap 索引,那么所有的查询都可以应用到索引。

bitmap索引不适用场景

  • 值重复度低的列,如:身份证号、手机号码等。
  • 重复度过低的列,如:性别,可以建立bitmap索引,但不建议单独作为查询条件使用,建议与其他条件共同过滤。
  • 经常需要更新修改的列。
  • 不适用于OLTP场景。
数据库索引是一种特殊的数据结构,它可以帮助数据库系统快速查找和访问数据。在数据库中,索引通常被用来加速查询语句的执行速度。常见的数据库索引类型包括: 1. B-Tree索引:B-Tree索引是一种基于树结构实现的索引方式,它能够快速地定位到需要查找的数据。B-Tree索引在大部分场景下都能够提供高效的查询性能,适合于处理大量的随机访问和范围访问。 2. Hash索引:Hash索引是一种基于哈希表实现的索引方式,它能够快速地定位到需要查找的数据。Hash索引通常用于处理精确匹配的查找,例如等值查询。但是,Hash索引不适合处理范围查询和模糊查询等操作。 3. Full-Text索引:Full-Text索引是一种针对文本内容进行全文检索的索引方式,它能够快速地查找包含指定关键词的文本内容。Full-Text索引通常用于处理文本搜索和信息检索等场景。 4. R-Tree索引:R-Tree索引是一种基于树结构实现的空间索引方式,它能够快速地查找包含指定空间范围的数据。R-Tree索引通常用于处理地理信息和空间数据等场景。 5. Bitmap索引Bitmap索引是一种基于位图实现的索引方式,它能够快速地定位到需要查找的数据。Bitmap索引通常用于处理低基数列(即列值相对较少)的等值查询,例如性别、婚姻状况等。 以上是常见的数据库索引类型,不同的索引类型适用于不同的数据访问模式和场景,开发者需要根据实际需求进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值