【发布时间】:2020-07-23 14:12:35
【问题描述】:
我以前有一张表,大约有1000W条数据,主键列的数据类型是uniqueidentifier,默认值是Newid()。现在出现性能问题,想把默认值改成NEWSEQUENTIALID()。
NEWSEQUENTIALID() 生成的 GUID 是否可以复制之前保存的数据(之前由NewId() 生成)?
【问题讨论】:
-
请记住,
newsequentialid()创建的值“大于自 Windows 启动以来此函数先前在指定计算机上生成的任何 GUID”。当操作系统重新启动时,您将获得一个新的种子值,该值可能低于之前的值,从而导致索引碎片。见this discussion。此外,它还特别提到了 windows——不确定它在 Linux 上的行为。
标签: sql-server newid newsequentialid