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/