剑指Offer(SQL)——使用bitMap优化索引

在这里插入图片描述
bitMap索引不是主流的索引,只有很少的数据库支持如主流的Oracle数据库,首先按照状态值分开每种值空间会存储一个实际行是否是这个值。
bitMap索引会下载到内存中几乎是CPU叠加进行操作,这样的速度是非常高的。

但是bitMap索引只适用于某字段只有几个固定的值。

bitMap还是存在缺点的:
使用bitMap索引锁的力度是非常大的,新增/修改一条数据时通常与它在同一个位图的数据操作都会被锁住,某行所在位置顺序会随data增加或删除发生改变,这也就意味着这不适合高并发的联机事务处理不适用于OLTP系统,适用于低并发统计计算多的OLAP系统。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于使用bitmap进行去重的优化,有以下几个方面可以考虑: 1. 选择合适的bitmap实现:可以根据需求选择不同的bitmap实现方式,比如使用位图数组、位图集合或者布隆过滤器等。不同的实现方式在空间占用和查询性能方面有所差异,根据具体场景选择合适的实现方式。 2. 优化bitmap的内存占用:如果需要去重的数据量非常大,可以考虑使用压缩算法来减少bitmap的内存占用。例如,Roaring Bitmaps是一种高效的压缩位图实现,可以显著减少内存消耗。 3. 并行处理:如果去重的数据量较大,可以考虑并行处理来加速去重过程。可以将数据分成多个部分,每个部分使用一个bitmap进行去重,然后将结果合并。这样可以利用多核处理器的并行能力,提高去重的效率。 4. 预处理和过滤:如果已知数据集的特点,可以通过预处理和过滤操作来减少需要进行去重的数据量。例如,可以先进行一些简单的过滤操作,如基于规则或者前置条件进行筛选,将无需去重的数据排除掉,从而减少bitmap的大小和查询开销。 5. 内存优化:在内存使用方面,可以考虑使用位运算等技巧来减少内存占用。例如,可以使用字节存储多个位信息,或者利用位运算来进行高效的位操作。 需要根据具体情况选择合适的优化策略,综合考虑时间复杂度、空间复杂度和实际需求来进行优化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值