在聚集索引上插入负键值

Inserting negative key values on a clustered index

我有一个仓库事实 table,它在 BIGINT 列上有一个聚簇索引。由于我无法控制的情况,我必须从另一个来源向事实 table 添加数据,其中来自两个不同来源系统的键重叠(我想要来自第二个来源的数据在它自己的数据集市中,但我是否决)。为了处理这个问题,我将 1000000 添加到密钥并将其乘以 -1。

如果我将所有这些负键插入聚簇索引,与不断添加 > 0 的键越来越大相比,它在重组或重建索引时是否会增加更多开销。

谢谢

如果您向聚簇索引中添加更多值(正值或负值),数据量会增加 - 所以是的,随着时间的推移,开销会增加一些。

但这并不取决于这些值是正值还是负值...索引不关心这一点 - 它只是一堆 BIGINT 值。

嗯,是的,确实如此。想一想写在几张已排序的纸上的列表。在末尾加一个词条是没有问题的:如果最后一页space够了,就把词条写在该页上,如果最后一页满了,就在最后一页加个空白页就行了结束并在该页面上写下条目。但是,如果您必须在列表的开头添加一个新条目怎么办?第一页的所有条目都必须向下移动以便为新条目腾出空间,如果页面已满,则必须添加新页面......在SQL服务器中,这个新页面不会在前面其他页面,因此页面列表将变得碎片化,这将影响查询性能。

如果您不需要按该键在磁盘上对记录进行物理排序,请考虑将索引更改为非聚集索引。