您的位置:首页 > 其它

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

2011-11-02 16:57 211 查看
位图索引 

命令: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系统,位图索银适合在读密集的环境下工作,多个会话并发频繁地写的环境并不适

合,因为更新一行会锁定很多行,影响并发性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  工作
相关文章推荐