今天看了oracle B-TREE和bitmap索引,在网上查了资料http://www.oracle.com/technology/global/cn/pub/articles/sharma_indexes.htmloracle官方解释
但是还是没有怎么明白
我自己的理解是,有序表的话使用b-tree索引要好些,无序的表使用bitmap要好些
但是这种理解,感觉很肤浅,望高人指点,谢谢
但是还是没有怎么明白
我自己的理解是,有序表的话使用b-tree索引要好些,无序的表使用bitmap要好些
但是这种理解,感觉很肤浅,望高人指点,谢谢
但要注意bitmap对于并发操作时,改一条会锁了很多记录,因为在一个索引集上
不知lz明白不
男
男
女
男
女
那么每个bitmap索引会有5位
男的条目 11010
女的条目 00101
因为所有的记录在一个都在索引条目上,所以修改或增加时会一起锁定
看来,性能优化的一切都来自于测试!
敬佩此等高手!
贴引:1.位图索引,它使用索引来响应该查询。
B-tree 索引,优化程序选择了全表扫描;
2.位图索引也可以索引空值(与 B-tree 索引不同)。3.DSS 系统中的位图索引支持即席查询;
B-tree 索引不支持即席查询。4.B-tree 索引更适合于 OLTP 应用程序;
使用位图索引,优化程序可以有效地响应包括 AND、OR 或 XOR 的查询;5.对于 B-tree 索引,它会考虑群集因子的值;
使用位图索引生成执行计划时,该优化程序不考虑群集因子的值。"有序表的话使用b-tree索引要好些,无序的表使用bitmap要好些。" --楼主的理解看来是正确的。
这东西只在OLAP或者数据仓库中用,或者你的表只读也行。
有DML操作的表一般都不会用位图索引的。带来的后果会非常严重。
在位图索引中修改键值列需要使用段一级的锁,而B-TREE索引使用的是行一级的锁
b-tree索引可能更适合于OLTP系统,因为在OLTP系统中DML的操作比较频繁。
bitmap索引更适合于Data Warehouse系统,因为在Data Warehouse系统中表一般都比较大但是静态的并且查询较为复杂