在向具有聚簇索引的表中添加新行时,是否维护了行的物理排序?

时间:2011-06-11 02:38:43

标签: sql database informix

在IDS?.. SE?.. SQL Server,Oracle,MySQL和其他人自动将新行插入数据文件中的适当位置以维持群集。

2 个答案:

答案 0 :(得分:1)

Informix处理聚簇索引的方法是重建表(和索引),以便表中的数据在创建索引时的索引的物理序列正确。此后,在最合适的位置插入行,这不会继续保留群集顺序。自从( 1985年的Informix-SQL 1.10 )以来,自1986年的Informix-SQL 2.10(可能是2.00;我还没有手册)到2010年的Informix Dynamic Server 11.70就是这种情况。

声明:

ALTER INDEX idxname TO NOT CLUSTERED;

总是非常快。补充声明:

ALTER INDEX idxname TO CLUSTERED;

通常是一个缓慢的过程,包括在删除旧表和索引之前创建表的全新版本和索引。


ISQL 1.10手册没有ALTER INDEX; 2.10手册确实有ALTER INDEX。

答案 1 :(得分:1)

我不能回答IDS,但我可以为你提到的一些人。

这取决于平台:它是否使用页面并将数据与索引树分开?

通常,行的物理排序不是维护的:只有逻辑排序可以是

原因:你不能在固定尺寸的页面上“腾出空间”(波希米亚人建议)

因此,如果您扩展一行(例如,向长varchar添加更多数据)或插入(ID=3id IN (2,4)之间),则会出现以下情况之一

  • 行被带到指向
  • 的新页面
  • 行溢出(例如SQL Server 2005+)
  • 页面已拆分

这会导致逻辑/索引碎片化和数据密度降低(每页):这就是为什么我们要进行索引维护来删除它。