根据情况,您可以通过创建集群索引或更改集群索引来消除扩展数据块交错。 使用 CREATE INDEX 或 ALTER INDEX 语句的 TO CLUSTER 子句时,数据库服务器对表进行排序并重新构建表。
TO CLUSTER 子句对物理表中的行重新排序以匹配索引中的顺序。有关更多信息,请参阅集群。
如果在此较大的邻接空间之前还存在成块的可用空间,数据库服务器可能首先分配较小的成块空间。 数据库服务器从块的起始处为 ALTER INDEX 进程分配空间,寻找成块的可用空间(大于或等于为下一个扩展数据块指定的大小)。如果数据库服务器用分散在块中较小的成块的可用空间重新建立表,它不会消除扩展数据块交错现象。
要显示可用空间块的位置和大小,请执行 oncheck -pe 命令。
要使用 ALTER INDEX 语句的 TO CLUSTER 子句:
对索引建立集群前无需删除索引。但是,ALTER INDEX 进程比 CREATE INDEX 更快,因为数据库服务器使用索引按集群顺序来读取数据行。另外,生成的索引压缩程度更高。
要防止问题再次发生,可考虑增加表空间扩展数据块的大小。