位图索引什么情况下该使用?

位图索引 
命令:create bitmap index job_idx on emp(job)


什么情况下该用位图索引
1.低相异基数,与整个数据集的基数相比,这个数据只有很少几个不同的值。
如对于1万条记录,2就是低相异基数,2/10000接近0.
如对于10000000条记录相比,5000个不同的值也是低相异基数。
2.如果有大量的临时查询,特别是查询以一种临时方式引用了多列或者会生成诸如count之类的聚合,在这


样的环境中,位图索引就特别有用。


select count(*)
from t
where gender='M'
and location in (1,20,30)
and age_group = '41 and over';

这种情况B树索引机制不行,因为这样需要组合3-6个可能的B*树索引,而且这3列或他们的任何子集都可能


出现。而且对于这种低基数数据建立B*树索引并不明智。
位图索引,能对位图使用函数如and,or,not而很快得到合并后的位图,再将其中的1换成rowid来访问数据


,所以此时位图索引更好。


什么情况下不该用位图索引


位图索引不适用于OLTP系统,位图索银适合在读密集的环境下工作,多个会话并发频繁地写的环境并不适


合,因为更新一行会锁定很多行,影响并发性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值