【发布时间】:2010-09-16 02:37:19
【问题描述】:
我知道基于 Guid 的主键性能不是最好的(由于碎片),但它们是全局唯一的并且允许复制场景。
另一方面,整体标识符以可扩展性为代价获得更高的性能。
但是在什么情况下有人会想要使用顺序唯一标识符作为主键呢?我认为,它超出了 GUID 的目的,但我仍然不时看到提及后续事件。
我错过了什么?
【问题讨论】:
标签: sql database guid uniqueidentifier
我知道基于 Guid 的主键性能不是最好的(由于碎片),但它们是全局唯一的并且允许复制场景。
另一方面,整体标识符以可扩展性为代价获得更高的性能。
但是在什么情况下有人会想要使用顺序唯一标识符作为主键呢?我认为,它超出了 GUID 的目的,但我仍然不时看到提及后续事件。
我错过了什么?
【问题讨论】:
标签: sql database guid uniqueidentifier
在 SQL Server 2005 中通常称为顺序 guid(由 NEWSEQUENTIALID() 生成)是为了克服普通 guid 的问题。
它们是仍然普遍独特,但也总是在上升。这意味着它们可以用于复制并且比传统的 GUID 具有更好的插入性能。
一个缺点是它们不“安全”,因为可以猜测下一个顺序 guid。
【讨论】:
使用顺序 guid 可确保您始终使用大于最后一个值的值。对于索引字段,这很重要。您总是在数据的最后一个“页面”的末尾插入,而不是在整个范围内随机插入,从而大大减少了页面拆分,尤其是在您的 uniqueidentifier 列也是您的聚集索引的情况下。
【讨论】: