我有一个棕色字段 SQL Server 2005 数据库,它使用标准的、未排序的 GUID 作为主键值的大部分,并且也在聚集索引中(这对性能不利)。
我应该如何将这些更改为顺序 GUID?挑战之一是在我更改每个主键时替换所有外键值。
您知道执行此类转换的任何工具或脚本吗?
我有一个棕色字段 SQL Server 2005 数据库,它使用标准的、未排序的 GUID 作为主键值的大部分,并且也在聚集索引中(这对性能不利)。
我应该如何将这些更改为顺序 GUID?挑战之一是在我更改每个主键时替换所有外键值。
您知道执行此类转换的任何工具或脚本吗?
请记住,您只能使用 newsequentialid() 函数作为默认值
所以创建一个有 2 列的新表。将原始表中的密钥插入此表中(将另一列留出它会自行填充)
加入原始表并使用 newssequantialid 更新 PK,如果您有级联更新,则 FK 应自行更新
你怎么知道它对性能不好?
GUID 的优点是您不必担心多个进程同时创建记录。它可以大大简化您的代码,具体取决于程序。
当 Guid 是 PK 时,SequentialGuids 最适合性能。这就是它们存在的原因。