问题本身很简单:
如何强制数据库系统尝试将值插入到末尾,并且如果它失败(在B树中不最右边(大边),可以在const时间检查),则只能执行二进制搜索正确的位置?
目标系统:MSSQL 2016或2017
答案 0 :(得分:3)
您是否希望timestampt
成为聚集索引,否则就不要。没有“中途”聚集索引。
因此,如果您希望将其群集,请在每页上保留额外的空间,以防以后插入新值。您可以使用fill_factor
(记录在here中)进行控制。这样,聚簇索引可以(更多)有效地插入不在结尾处的值。
如果您不想在timestampt
上使用聚集索引,请使用identity
列来标识每一行。这将确保仅在表的“末尾”(即最后一页)插入行,从而使插入效率更高。您仍然可以在timestampt
上使用常规索引来进行有效访问。
实际上,我更喜欢第二种方法。我会担心timestampt
中的重复项,并且我更喜欢使用一个聚集索引来唯一标识每一行。