6

user_info在五个不同的位置有一张桌子。现在我需要将所有行整合到一个中央user_info表中。为此,我需要源表中每一行的唯一 ID。因为当所有的行都进入中央表时,那么每个用户都必须有一个唯一的 ID。

现在我的问题是:

  1. 如果我uniqueidentifier NEWID()用于每个源表,那么它在全局和生命周期中是唯一的还是有机会重复?

  2. SQL Server 如何创建NEWID()? 我需要知道密钥生成结构。

4

1 回答 1

8

是的,机器之间没有重复的机会。

NEWID()是基于伪随机数(来自时钟)和主 NIC 的 MAC 地址的组合。

然而,像这样插入随机数作为表上的聚集键对性能来说是很糟糕的。您应该考虑使用一种NEWSEQUENTIALID()或一种 COMB 类型的函数来生成 GUID,这些 GUID 仍可提供避免碰撞的好处,NEWID()同时仍保持可接受的INSERT性能。

于 2012-09-23T06:59:21.663 回答