4

如果我没记错的话,聚集索引会根据一些自定义顺序对磁盘上的表行进行物理排序。我假设表存储在文件中(可能每个表一个文件?)。好吧,但是,假设有人在表中插入了一个“新行”,并且应该将其放置在例如开头。然后数据库需要在文件中物理地移动整个表(所有行)?是不是太慢了,或者是否有任何优化技术如何在插入后实现排序?

4

1 回答 1

5

表不一定存储为文件。从逻辑上讲,它们存储在页面中。假设每个页面有 100 行,并且在需要时可以容纳额外的 20 行。然后将所有页面链接在一起以形成整个表格数据。

在您的情况下,当您在开头添加新行时,您只需更改第一页,仅移动 100 行。如果您一遍又一遍地这样做,当该页面的行数超过 120 时,该页面将被拆分为两个链接在一起的新页面。

于 2012-07-22T15:10:16.600 回答