在聚集索引上插入负键值

时间:2018-08-10 04:30:36

标签: sql-server indexing database-administration clustered-index

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

如果我将所有这些否定键插入聚簇索引中,那么在重新组织或重建索引时是否会不断添加大于0的键> 0,这会增加更多的开销。

谢谢

2 个答案:

答案 0 :(得分:0)

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

但这并不取决于这些值是正值还是负值...索引无关紧要-只是一堆BIGINT值。

答案 1 :(得分:0)

是的,是的。想一想写在几张纸上的清单。在末尾添加条目是没有问题的:如果最后一页上有足够的空间,则可以在该页面上写条目,如果最后一页已满,则只需在末尾添加空白页并写上该页面上的条目。但是,如果您必须在列表的开头添加一个新条目怎么办?必须将第一页上的所有条目下移以为新条目腾出空间,如果该页面已满,则必须添加一个新页面…在SQL Server中,此新页面将不在其他页面之前,因此页面列表将变得零散,这将影响查询性能。

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