如何用顺序GUID替换所有非顺序GUID?

时间:2009-06-19 13:27:58

标签: sql-server sql-server-2005 guid data-conversion

我有一个棕色字段SQL Server 2005数据库,它使用标准的,未排序的GUID作为主键值的大部分,也用于聚簇索引(这对性能有害)。

我应该如何将这些更改为顺序GUID?其中一个挑战是在更改每个主键时替换所有外键值。

您知道有哪些工具或脚本可以执行此类转换吗?

3 个答案:

答案 0 :(得分:5)

请记住,您只能将newsequentialid()函数用作默认值

所以创建一个包含2列的新表。将原始表中的密钥插入此表中(将另一列留下,它将自行填充)

加入原始表并使用newsequantialid更新PK,如果你有级联更新,FK应该自己更新

答案 1 :(得分:0)

你怎么知道它对性能有害?

GUID的优点是您不必担心同时创建记录的多个进程。它可以大大简化您的代码,具体取决于程序。

答案 2 :(得分:0)

当Guid是PK时,SequentialGuids最适合表现。这就是他们存在的原因。