A-A+

有关索引-位图索引

2013年03月25日 BasicKnowledge 暂无评论 阅读 1,947 次

位图索引
位图索引基础知识:
一个位图索引由多个位串组成,每个位串都表示基础列中的一个独特的有效值,每个位是打开或者是关闭表示该值是否适用于某一行。

使用位图索引的情景:
1)一般用于低基数列
2)最好用于dss系统或者数据仓库
3)最好用于星型模式
4)对于在索引列上有许多连接或者过滤查询的情况,位图索引时比较高效的
5)对于启用了位图索引的表最好减少或者避免DML操作
6)如果要对启用了位图索引的表进行DML操作,最好先将位图索引删除,再将数据进行更新,最后再重现创建位图索引
7)如果要对分区表上执行DML操作,最好将发生DML的分区的位图索引置为不可用,等DML操作结束后再重新创建该索引分区

使用位图索引的优势:
1)在数据仓库中,位图索引比传统的B树索引的查询速度要高。
2)位图索引的创建速度比B树索引快。
3)位图索引的维护操作很快。
4)位图索引占用的空间远比与其相当的B树索引小得多。

注意事项:
1)对于OLTP系统,位图索引时不恰当的,会出现行锁定的问题。
2)在位图索引中确实会存储索引列的空值,而在B树索引中,至少在单列索引中不会存储空值,但是对于复合的B树索引,只要其中有一列包含一个非空值,就可以存储其他列的空值。
3)如果查询包含了空值且创建了单列索引列,数据库就需要执行全表扫面或者使用其他现有索引,然后在已被检索后再过滤掉包含空值的列。如果使用的是位图索引就不会有这种情况发生。
4)建议始终使用NOLOGGING选项创建位图索引,由于位图索引的DML操作性能很差,所以最好是删除并重建他们。
5)可以在分区表上创建位图索引,但是必须创建为本地分区索引。
6)oracle不允许对分区表创建全局分区的位图索引。
7)需要在事实表的所有外键列上创建位图索引。
8)在数据加载前删除位图索引,加载完成后重建位图索引。
9)值为日期类型的列不适宜创建位图索引。
10)如果在大型分区表上有位图索引,建议对索引执行分区级别的操作,而不是删除整个位图索引。

对位图索引进行维护时,需要执行以下步骤:
1)删除所有位图索引,如果是分区表,则将牵扯到的分区的位图索引置为不可用。
2)对表进行DML操作。
3)重建位图索引或者对分区表受影响的分区进行重建。

位图连接索引
位图连接索引块是事实表和维度表的外键列之间的一个等值内连接。位图连接索引就是2个表之间索引列的物化连接,它只被处理和存储一次。位图连接索引是为星型模式量身定制的,在访问星型模式的表时考虑使用它,以提高查询效率。

标签:

给我留言

Copyright © YallonKing 保留所有权利.   Theme  Ality

用户登录

分享到: