目前,我们有许多表在主键上使用 newid() 。这导致了大量的碎片。所以我想更改该列以使用 newsequentialid() 代替。
我认为现有数据仍将保持相当分散,但新数据的分散程度将减少。这意味着我也许应该等待一段时间,然后再将 PK 索引从非聚集更改为聚集。
我的问题是,有人有这样做的经验吗?有什么是我忽略的、应该注意的吗?
您可能会考虑使用梳子导轨 http://www.informit.com/articles/article.aspx?p=25862,与 newsequentialid 相反。
cast(
cast(NewID() as binary(10)) +
cast(GetDate() as binary(6))
as uniqueidentifier)
梳状引导是纯随机引导与当前日期时间的非随机性的组合,因此连续生成的梳状引导彼此靠近并且通常按升序排列。与 newsequentialid 相比,Comb guid 具有多种优势,包括它们不是黑匣子、您可以在默认约束之外使用此公式,以及可以在 SQL Server 之外使用此公式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)