在数据库中建两张相同的表,对同一字段分别建立压缩索引和正常索引,在查看索引大小时发现如果某一字段重复的值较少,那么该字段压缩索引占用的空间会大于正常索引的占用的空间,这是为什么?
------解决方案--------------------
索引压缩适合于那些键值重复率高的索引,这样才能够达到压缩键值,节省存储空间目的.但是压缩也是会引入存储开销的,只是很多时候压缩节省的空间比压缩需要的存储开销更大,所以压缩以后整体的存储开销减小了,当你压缩效果不明显时(重复值较少),就会导致存储开销比一般索引更大
------解决方案--------------------
如果字段重复值很少,就没有必要建立压缩索引了。压缩索引会在解析时增加cpu的负载。再者,索引压缩,需要在原来叶子块上面增加4个字节的开销。这也就是为什么当重复字段比较少时压缩索引占用的物理空间会比正常索引大的原因。
------解决方案--------------------
压缩索引相当于给索引分组,每个块除了需要记录数据记录的位置还要记录分组的地址
根据压缩索引查找时,应该是先根据关键字查找到分组,然后在分组内部查找对应的数据记录