SQL Server如何使用NEWID()创建uniqueidentifier

ria*_*iad 6 sql-server

user_info在五个不同的地方有一张桌子.现在我需要将所有行集成到一个中央user_info表中.为此,我需要源表中每行的唯一ID.因为当所有行都进入中央表时,每个用户必须具有唯一的ID.

现在我的问题是:

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

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

ric*_*ent 8

是的,机器之间不存在重复的可能性.

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

但是,在表格中插入像这样的随机数作为聚簇键是非常糟糕的.您应该考虑使用NEWSEQUENTIALID()或者COMB类型函数来生成仍然提供避免冲突的GUID,NEWID()同时仍然保持可接受的INSERT性能.