如何将所有非连续 GUID 替换为连续 GUID?

发布于 2024-07-24 07:11:30 字数 163 浏览 7 评论 0原文

我有一个旧有的 SQL Server 2005 数据库,它使用标准的、未排序的 GUID 作为主要键值,并且也在聚集索引中使用(这对性能不利)。

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

您知道执行此类转换的任何工具或脚本吗?

I have a brown-field SQL Server 2005 database that uses standard, unsorted GUIDs as the majority of the primary keys values and also in clustered indexes (which is bad for performance).

How should I go about changing these to sequential GUIDs? One of the challenges would be to replace all of the foreign key values as I change each the primary key.

Do you know of any tools or scripts to perform this type of conversion?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

乖乖兔^ω^ 2024-07-31 07:11:31

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

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

连接回原始表并使用 newsequantialid 更新 PK,如果您有级联更新,则 FK 应该自行更新

remember that you can only use the newsequentialid() function as a default

so create a new table with 2 columns. Insert the key from you original table into this one (leave the other column out it will fill itself)

join back to the original table and update the PK with the newsequantialid, if you have cascade update the FKs should update by themselves

就此别过 2024-07-31 07:11:31

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

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

How do you know it's bad for performance?

The advantage of GUIDs is that you don't have to worry about multiple processes creating records at the same time. It can simplify your code considerably, depending on the program.

用心笑 2024-07-31 07:11:31

当 Guid 是 PK 时,SequentialGuids 的性能最佳。 这就是它们存在的原因。

SequentialGuids are best for performance when the Guid is the PK. This is the reason behind their existence.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文