NEWSEQUENTIALID() (Transact-SQL)
在启动 Windows 后在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。 在重新启动 Windows 后,GUID 可以再次从一个较低的范围开始,但仍是全局唯一的。 在 GUID 列用作行标识符时,使用 NEWSEQUENTIALID 可能比使用 NEWID 函数的速度更快。 其原因在于,NEWID 函数导致随机行为并且使用更少的缓存数据页。 使用 NEWSEQUENTIALID 还有助于完全填充数据和索引页。
重要提示 |
---|
如果涉及保密问题,则不要使用该函数。 可以猜想下一个生成的 GUID 的值,从而访问与该 GUID 关联的数据。 |
NEWSEQUENTIALID 是对 Windows UuidCreateSequential 函数的包装。
语法
NEWSEQUENTIALID ( )
返回类型
uniqueidentifier
注释
NEWSEQUENTIALID() 只能与 uniqueidentifier 类型表列上的 DEFAULT 约束一起使用。 例如:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID())
当 NEWSEQUENTIALID() 用于 DEFAULT 表达式时,不能与其他标量运算符结合使用。 例如,您不能执行以下操作:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID()))
在上一个示例中,myfunction() 是接受并返回 uniqueidentifier 值的标量用户定义标量函数。
NEWSEQUENTIALID() 不能在查询中引用。
您可以使用 NEWSEQUENTIALID() 生成 GUID 以减少叶级别索引上的页争用。
使用 NEWSEQUENTIALID() 生成的每个 GUID 在该计算机上都是唯一的。 仅当源计算机具有网卡时,使用 NEWSEQUENTIALID() 生成的 GUID 在多台计算机上才是唯一的。