NEWSEQUENTIALID (Transact-SQL)

在启动 Windows 后在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。 在重新启动 Windows 后,GUID 可以再次从一个较低的范围开始,但仍是全局唯一的。 在 GUID 列用作行标识符时,使用 NEWSEQUENTIALID 可能比使用 NEWID 函数的速度更快。 其原因在于,NEWID 函数导致随机行为并且使用更少的缓存数据页。 使用 NEWSEQUENTIALID 还有助于完全填充数据和索引页。

重要说明重要提示

如果涉及保密问题,则不要使用该函数。因为有可能猜到下一个生成的 GUID 的值,从而访问与该 GUID 关联的数据。

NEWSEQUENTIALID 是对 Windows UuidCreateSequential 函数的包装。

适用范围:SQL Server(SQL Server 2008 到当前版本)。

主题链接图标 Transact-SQL 语法约定

语法

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 在多台计算机上才是唯一的。

请参阅

参考

NEWID (Transact-SQL)

比较运算符 (Transact-SQL)