NEWID()函数是否永远不会给我相同的ID?假设我选择一个NEWID()并返回“1”(仅作为示例)。它永远不会再返回“1”吗?不可能吗

最佳答案

NEWID() NEWSEQUENTIALID() 都给出 uniqueidentifier 类型的全局唯一值。
NEWID()涉及随机 Activity ,因此下一个值是不可预测的,并且执行起来较慢。
NEWSEQUENTIALID()不涉及随机 Activity ,因此the next generated value can be predicted(不容易!)比NEWID()执行得更快。

因此,如果您不担心要预测下一个值(出于安全原因),则可以使用NEWSEQUENTIALID()。如果您担心可预测性,或者不介意微小的性能损失,则可以使用NEWID()

但是,从严格意义上讲,由不同机器生成的GUID具有相同值的机会仍然微不足道。在实践中,这被认为是不可能的。

如果您需要更多信息,请阅读:Which method for generating GUIDs is best for ensuring the GUID is really unique?

注意NEWID()符合RFC 4122。另一个函数使用Microsoft的算法来生成值。

关于sql - SQL Server:NEWID()是否总是提供唯一的ID?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17908776/

10-13 06:45