use*_*739 18 sql database sql-server unique newid
该NEWID()功能是否从未给我提供与之相同的ID?假设我选择a NEWID()并返回'1'(仅作为示例).它永远不会再回归'1'吗?这不可能吗?
Jot*_*aBe 19
双方NEWID()并NEWSEQUENTIALID()给出类型的全球唯一的值uniqueidentifier.
NEWID() 涉及随机活动,因此下一个值是不可预测的,执行起来较慢.
NEWSEQUENTIALID()不涉及随机活动,因此可以预测下一个生成的值(不容易!)并且执行速度快于NEWID().
因此,如果您不关心预测的下一个值(出于安全原因),您可以使用NEWSEQUENTIALID().如果您担心可预测性,或者您不介意可以使用的微小性能损失NEWID().
但是,从严格意义上讲,不同机器生成的GUID具有相同值的机会仍然可以忽略不计.在实践中,它被认为是不可能的.
如果您想了解更多信息,请阅读:生成GUID的哪种方法最适合确保GUID真正唯一?
注意NEWID()符合RFC 4122.另一个函数使用Microsoft的算法来生成值.
如果您在NEWID()同一台机器上运行,则返回值将始终是唯一的,因为它在计算中包含当前时间戳.
但是,在不同的机器/系统上,您可以从技术上获得相同的ID,但发生这种情况的可能性非常低,以至于今天的SQL DB社区基本上已经接受了它是不可能的.微软或多或少地在其上树立了声誉.
有关
| 归档时间: |
|
| 查看次数: |
41889 次 |
| 最近记录: |