四招提高位图索引的使用效果
2009-05-07 13:14:17 来源:WEB开发网核心提示: 二、把需要建立位图索引的列设置为固定长度的数据类型,在Oracle数据库中,四招提高位图索引的使用效果(2),数据类型从大的来说,包括固定长度的数据类型与可变长度的数据类型,还有一种就是在存储的时候利用数字来表示省份,然后再在另外一张表中建立数字与省份之间的对应关系,如就拿字符型数据来说,
二、把需要建立位图索引的列设置为固定长度的数据类型。
在Oracle数据库中,数据类型从大的来说,包括固定长度的数据类型与可变长度的数据类型。如就拿字符型数据来说,就有固定长度的字符串类型(char)与可变长度的字符串类型(VARCHAR2 )。这两个数据类型都是字符串数据类型,它们的差别主要在于字符串长度的控制上。CHAR存储固定长度的字符串。如果实际存储的字符串没有达到其规定的最大值的话,则数据库系统会自动在后面加上空格。而VARCHAR2则主要用来存储可变长度的字符数据类型。如存储固定长度的CHAR字符串类型不同,如果在这个列中存储的数据没有达到规定的最大值, 则数据库系统不会在最后加入空格,以实际的字符串存储。如果从数据库的体积上来看,肯定是可变长的数据类型比较好。
但是如果从位图索引的效果上来看,则最好把建立位图索引的列设置为固定长度的数据类型。因为位图索引使用固定长度的数据类型要比可变长度的数据类型在性能上要更加的优越。也就是说,如果要在某个字符类型的列上建立位图索引,那么最好把这个列的数据类型设置为char(即使其实际存储的长度不同),而不是设置额外NVCHAR2。因为相对于性能的提升来说,这点空间的损失仍然是值得的。
另外我们也可以通过其他一些手段来保证列中存储内存长度的一致。如拿中国的行政区为例,大部分行政区就是3个字,如浙江省;但是长度比较长的有8个字符,如新疆维吾尔自治区。如果记录比较多的话,累积下来确实会造成比较大的浪费。在这种情况下,数据库管理在设计的时候,可以采用一些折中的处理方式。如利用简称来代表各个省份的名字。还有一种就是在存储的时候利用数字来表示省份,然后再在另外一张表中建立数字与省份之间的对应关系。笔者建议采用的是后面一种方式。
更多精彩
赞助商链接