在MS SQL的PK中顺序uniqueidentifier的目的是什么?

时间:2008-10-08 19:04:47

标签: sql database guid uniqueidentifier

我知道基于Guids的主键不具有最佳性能(由于碎片),但它们是全局唯一的并允许复制方案。

另一方面,集成标识符以可扩展性为代价具有更高的性能。

但在某些情况下,有人想要使用顺序uniqueidentifier作为主键吗?我认为,它胜过了GUID的目的,但我仍然偶尔会看到提及的那些。

我在这里想念什么?

2 个答案:

答案 0 :(得分:6)

SQL Server 2005中通常所说的连续guid(由NEWSEQUENTIALID()生成)是尝试克服普通guid的问题。

他们 仍然是普遍独特的,但也总是在提升。这意味着它们可用于复制具有比传统GUID更好的插入性能。

一个缺点是它们不是“安全的”,因为它可以猜测下一个连续的guid。

http://msdn.microsoft.com/en-us/library/ms189786.aspx

答案 1 :(得分:1)

使用顺序guid可确保始终使用大于上一个值的值。对于索引字段,这很重要。您不必在整个频谱中随机插入,而是始终在最后一页“数据”的末尾插入,导致页面拆分大幅减少,特别是在您的uniqueidentifier列也是您的聚集索引的情况下。