插入具有聚集索引的表

Car*_*s00 4 sql database indexing clustered-index

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

Ram*_*lat 5

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

在您的情况下,将新行添加到开头时,只需更改第一页,仅移动100行。而且,如果您一遍又一遍地执行此操作,则当该页面的行数超过120时,该页面将分为两个链接在一起的新页面。