SQL GUID之 NEWID()、NEWSEQUENTIALID()、UUID()、UUID_SHORT() - 全局通用唯一标识符
SQL GUID之 NEWID()、NEWSEQUENTIALID()、UUID()、UUID_SHORT() - 全局通用唯一标识符
1、MS SQL
创建 uniqueidentifier 类型的唯一值。
1)、NEWID()
1 | select NEWID() --返回值示例:C5848**D-1*98-4D*7-*7D8-E**A462**324 |
1 | select CONVERT ( varchar (255), NEWID()) |
示例:随机抽取10条数据
1 | select top 10 * from table order by newid() |
2)、NEWSEQUENTIALID() //NEWSEQUENTIALID() 只能与 uniqueidentifier 类型表列上的 DEFAULT 约束一起使用。
1 | 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
1 | SELECT UUID() --生成32位,“-”分隔 ,例如:1**46fc*-f**7-11**-b**f-1*9**6a3***e |
1 | SELECT UUID_SHORT() --生成17位,例如:2**27**5921***656 |
1 | SELECT REPLACE (UUID(), '-' , '' ) --不带横线分隔方式 |
创建时间:2022.07.04 更新时间:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤