一个序列化的Guid主键列应该成为聚集索引吗?

3

使用连续的 GUID 的目的是为了能够在使用聚集索引时避免高度碎片化。如果使用普通的 GUID 作为聚集索引,会导致聚集索引存在高度碎片化,对此是否正确?

2个回答

7
首先要澄清的是主键和聚集索引是两个独立的不同事物,即它们并非相互关联(主键可以是非聚集的,聚集索引可以是非主键)。
鉴于此,我认为你更多地在问“是否应该使用顺序GUID作为聚集索引”。这是一个复杂的问题,但是Kimberly Tripp在她的文章中对此进行了最好的讨论。请注意,文章中提到PK,但在文章内部,她讨论了如何应用于聚集索引选择与PK的大多数情况。
假设您已经决定将GUID用作聚集键(可能是或可能不是这种情况),那么使用顺序GUID很可能比非顺序GUID更优,但至少有一种情况下可能更喜欢使用非顺序GUID(尽管这是一种非常罕见、非常高级的情况,您必须充分理解自己的系统和SQL服务器,以便毫无疑问地使用此方法——这将涉及到存储设备热点及跨集群不同位置传输大量写入数据的情形)。

感谢提供额外的信息,希望它能够对其他人有所帮助。 - Chris Marisic

2

是的,你说得对。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接