Oracle 合并索引和重建索引

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle 合并索引和重建索引

在为表建立索引后,随着对表不断进行更新、插入和删除操作,索引中将会产生越来越多的存储碎片,这对索引的工作效率会产生负面影响。这时用户可以采取两种方式来清楚碎片——重建索引或合并索引。合并索引只是将B树中叶子节点的存储碎片合并在一起,并不会改变索引的物理组织结构。例如,下面的语句对索引EMP_ENAME_INDEX执行合并操作:

SQL> alter index emp_ename_index

2 coalesce deallocate unused;

索引已更改。

图9-5解释了对索引执行合并操作后的效果。假设在执行该操作之前,B树索引的前两个叶块都有50%的空闲空间。在合并索引后,可以将它们的数据合并到一个索引叶块中。

合并前合并后

图9-5 对B树索引进行合并操作

消除索引碎片的另一个方法是重建索引,重建索引可以使用ALTER INDEX…REBUILD 语句。重建操作不仅可以消除存储碎片,同时还可以改变索引的全部存储参数设置,以及改变索引的存储表空间。重建索引实际上是在指定的表空间中重新建立一个新的索引,然后再删除原来的索引。例如,下面的语句对索引EMP_ENAME_INDEX进行重建:SQL> alter index emp_ename_index rebuild;

索引已更改。

在使用ALTER INDEX…REBUILD语句重建索引时,还可以在其中使用REVERSE子句,将一个反向键索引更改为普通索引,反之可以将一个普通的B树索引转换为反向键索引。另外,也可以使用TABLESPACE子句,以指定重建索引的存放位置。

SQL> alter index emp_job rebuild

2 tablespace example;

相关文档
最新文档