SQL GUID之 NEWID()、NEWSEQUENTIALID()、UUID()、UUID_SHORT() - 全局通用唯一标识符
SQL GUID之 NEWID()、NEWSEQUENTIALID()、UUID()、UUID_SHORT() - 全局通用唯一标识符
1、MS SQL
创建 uniqueidentifier 类型的唯一值。
1)、NEWID()
select NEWID() --返回值示例:C5848**D-1*98-4D*7-*7D8-E**A462**324
select CONVERT(varchar(255), NEWID())
示例:随机抽取10条数据
select top 10 * from table order by newid()
2)、NEWSEQUENTIALID() //NEWSEQUENTIALID() 只能与 uniqueidentifier 类型表列上的 DEFAULT 约束一起使用。
CREATE TABLE 表1 (字段1 uniqueidentifier DEFAULT NEWSEQUENTIALID());
- 不能在查询中引用 NEWSEQUENTIALID
- 可以使用 NEWSEQUENTIALID 生成 GUID 以减少叶级别索引上的页拆分和随机 IO。
- 使用 NEWSEQUENTIALID 生成的每个 GUID 在该计算机上都是唯一的。 仅当源计算机具有网卡时,使用 NEWSEQUENTIALID 生成的 GUID 在多台计算机上才是唯一的。
3)、NEWID()函数 和 NEWSEQUENTIALID() 函数 对比:
- 使用 NEWSEQUENTIALID 可能比使用 NEWID 函数的速度更快。 其原因在于,NEWID 函数导致随机行为并且使用更少的缓存数据页。 使用 NEWSEQUENTIALID 还有助于完全填充数据和索引页。
- NEWSEQUENTIALID 是 Windows UuidCreateSequential 函数的包装器,应用了某种字节随机排列。
- UuidCreateSequential 函数具有硬件依赖关系。
4)、uniqueidentifier 数据类型
uniqueidentifier 数据类型的列或局部变量可通过以下方式初始化为一个值 :
- 通过使用 NEWID 或 NEWSEQUENTIALID 函数。
- 通过从 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 形式的字符串常量进行转换,其中,每个 x 都是 0-9 或 a-f 范围内的十六进制数字。 例如,6F9619FF-8B86-D011-B42D-00C04FC964FF 为有效的 uniqueidentifier 值 。
比较运算符可与 uniqueidentifier 值一起使用 。 不过,排序不是通过比较两个值的位模式来实现的。 可针对 uniqueidentifier 值执行的运算只有比较运算(<>、<、>、<=、>=)以及检查是否为 NULL(IS NULL 和 IS NOT NULL)。 不能使用其他算术运算符。 除 IDENTITY 之外的所有列约束和属性均可对 uniqueidentifier 数据类型使用 。
具有更新订阅的合并复制和事务复制使用 uniqueidentifier 列来确保在表的多个副本中唯一地标识行 。
2、MySQL
SELECT UUID() --生成32位,“-”分隔 ,例如:1**46fc*-f**7-11**-b**f-1*9**6a3***e
SELECT UUID_SHORT() --生成17位,例如:2**27**5921***656
SELECT REPLACE(UUID(),'-','') --不带横线分隔方式
创建时间:2022.07.04 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!