oracle位图索引

位图索引是oracle查询过程中的一大利器,本章来学习一下oracle位图索引的基本原理和概念。假如有如下的一张表:
这里写图片描述
假如说用普通的查询:

SELECT * FROM TUSER WHERE TSEX=’男’;

那么数据库便要逐行的去查找性别为男的数据,当数据比较多的时候,这个查询就会变得很慢了。那怎么办呢?针对于这种查询,位图索引将会是一种非常好的办法。
当我们使用位图索引的时候,从性别方向上将会有两个向量,男向量为101,女向量为010
这里写图片描述
而婚姻方向上则有三个向量,已婚为100,未婚为010,离婚为001
这里写图片描述
那么假如做如下的查询

select * from tuser where tsex=’男’ and marital=’已婚’;

这个时候用位图向量来查询就非常的简单了,直接对男和已婚两组向量做and操作,那么就会得到如下的结果:
这里写图片描述
得到的结果是100,即第一条数据符合要求,非常快速的就得到了结果。


从上边的分析可以看以下下的两种场合非常不适合使用位图索引:

1.列上有大量的特征值,比如身份证号,这样的数据列,每个人的都不相同,如果为这样的列添加位图索引会得不偿失。
2.频繁更新的列,如果频繁的更新位图索引所在的列的数据,那么oracle就不得不频繁的维护位图索引,这样就极有可能导致表被锁,影响整个系统的性能。


创建位图索引的方式

CREATE BITMAP INDEX INDEX_NAME ON TABLE_NAME(COLUMN_NAME);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值