如何用顺序GUID替换所有非顺序GUID?
-
06-07-2019 - |
题
我有一个棕色字段SQL Server 2005数据库,它使用标准的,未排序的GUID作为主键值的大部分,也使用聚簇索引(这对性能有害)。
我应该如何将这些更改为顺序GUID?其中一个挑战是在更改每个主键时替换所有外键值。
您知道有哪些工具或脚本可以执行此类转换吗?
解决方案
请记住,您只能将newsequentialid()函数用作默认值
所以创建一个包含2列的新表。将原始表中的密钥插入此表中(将另一列留下,它将自行填充)
加入原始表并使用newsequantialid更新PK,如果你有级联更新,FK应该自己更新
其他提示
你怎么知道它对性能有害?
GUID的优点是您不必担心同时创建记录的多个进程。它可以大大简化您的代码,具体取决于程序。
当Guid是PK时,SequentialGuids最适合表现。这就是他们存在的原因。
不隶属于 StackOverflow