在本章中,您将学习oracle位图索引的基本原理和概念。 假设有以下表格。
如果使用普通查询:
select * fromtuserwheretsex=’男’;
数据库一行一行地去寻找性别为男性的数据。 如果数据很多,这个查询会很慢。 我该怎么办? 对于这种查询,位图索引是一种非常好的方法。
使用位图索引时,从性别方向看有两个向量。 男性向量为101,女性向量为010
婚姻方向有三个向量,已婚100,未婚010,离婚001
那么,我们将进行以下查询
select * fromtuserwheretsex=’男’and marital=’已婚’;
此时,用位图向量进行调查很简单,但是直接对男性和已婚的两组向量进行and操作,可以得到以下结果。
得到的结果为100,即第一批数据满足要求,非常快速地得到了结果。
从上边的分析可以看以下下的两种场合非常不适合使用位图索引:
1 .列中有很多特征值,如身份证号码等。 这样的数据列因人而异。 如果在这样的列中添加位图索引,则无法弥补损失。
2 .如果经常更新的列经常更新包含位图索引的列中的数据,则oracle必须经常维护位图索引,表很可能会被锁定并影响整个系统的性能。
如何创建位图索引
createbitmapindexindex _ nameontable _ name (column _ name;