四招提高位图索引的使用效果
2009-05-07 13:14:17 来源:WEB开发网总之如果要为某个列建立位图索引的话,则数据库管理员最好能够想方设法让这个字段采用固定长度的数据类型,有时候即使牺牲一点存储空间也是在所不辞。
三、位图索引的使用限制。
虽然说位图索引在基数比较小的列或者使用到逻辑运算符时能够显著的提高数据库的查询性能,但是其在使用的时候仍然有不少的限制。数据库管理员需要了解这些限制,如此的话在数据库设计时才不会竹篮子打水一场空。
如把某个字段设置为位图索引的话,最好采用固定长度的数据类型。同时这个长度有最大的限制。在最新的Oracle数据库版本中,这个位图索引的最大长度不能够超过30。不知道以后的版本中会不会放宽这个长度上的限制。如位图索引不能够被声明为唯一索引;如位图索引不包含认为列数据,并且不能够用于任何类型的完整性检查;如当执行ALTER TABLE语句并修改包含有位图索引的列时,这会使位图索引失效。
最重大的一个限制是基于规则的优化器不会考虑位图索引。Oracle数据库系统在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工作是由优化器来完成的。Oracle的优化器共有两种的优化方式,即基于规则的优化方式和基于成本的优化方式。基于规则的优化方式是指优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。基于成本的优化方式是看语句的执行成本。这里的成本主要指Cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给出表的大小、有少行、每行的长度等信息。然后数据库系统会根据这些信息来确定是否需要采用这个优化方式。另外还有根据这两个优化模式衍生出来的优化器。
总之数据库管理理员需要明确的一点就是,如果要采用位图索引的话,则最好把数据库的优化器选择为基于成本的优化器模式。因为如果数据库采用的是基于规则的优化器模式的话,则会忽略位图索引。那么此时数据库管理员所建立的位图索引将一无用处。这一点大部分数据库管理员可能并不清楚,一定要引以为鉴。
更多精彩
赞助商链接