随着对表不断进行操作,在表的索引中将会产生越来越多的存储碎片,这对索引工作效率将会产生负面影响,
这是用户可以用两种方式来清理碎片,即合并索引和重建索引。
1.合并索引
合并索引只是简单地将B树叶子节点中的存储碎片合并到一起,并不会改变索引的物理结构
[例子]使用COALESCE选项进行合并索引
sql> alter index index_name coalesce;
2.重建索引
重建索引其实就是重新创建一个新的索引,然后删除原来的索引,所以在创建索引时,同样可以使用CREATE
index语句中的各种选项,比如,利用STORAGE选项知道存储参数,利用TABLESPACE选项指定的表空间。
执行delete dorm 操作时,会删除表中的数据,但是索引上仅仅进行逻辑删除,其所占的空间不能供其它插
操作使用,只有当索引数据块上的所有索引入口全部被删除后,该索引数据库上的空间才能使用,如果在索引列上
频繁的执行UPDATE或者DELETE操作的话,则要定期重建索引,以提高空间利用率。
[例子]可以使用rebuild选项进行重建索引
sql>alter index index_name rebuild;
[例子]在重建索引上指定TABLESPACE,让所有存储到另外一个空间
aql>alter index index_name rebuild tablespace other_tablespace;
合并索引和重建索引都可以清理索引数据块中的碎片,但是又有区别,
合并索引:
1.不能将索引移动到其他表空间
2.代价比较低,不需要使用额外的存储空间
3.只能在B树的同一子树种进行合并,不会改变树的高度
4。可以快速释放叶子节点中未使用的存储空间
重建索引:
1。可以将索引移动到其他的表空间
2。代价比较高,需要使用额外的存储空间
3。重建整个B树,可以降低B树的高度
4。可以快递更改索引存储参数,如果在重建中指出了ONLINE关键字,还可以再重建索引时使用索引。