【问题标题】:Inserting negative key values on a clustered index在聚集索引上插入负键值
【发布时间】:2018-08-10 04:30:35
【问题描述】:

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

如果我将所有这些负键插入到聚集索引中,是否会在重组或重建索引时增加更多开销,而不是不断添加越来越大的大于 0 的键。

谢谢

【问题讨论】:

  • 好的,谢谢。我不确定,因为聚集索引是排序的。谢谢

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 2017-08-20
      • 2011-11-08
      • 2014-10-25
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多