【发布时间】:2011-02-13 09:22:43
【问题描述】:
我有两个具有 10-2000 万行的表,它们具有 GUID 主键,并且至少有 12 个通过外键相关的表。每个基表有 10-20 个索引。
我们正在从 GUID 迁移到 BigInt 主键。我想知道是否有人对方法有任何建议。现在这是我正在考虑的方法:
- 删除所有相关表上的所有索引和 fkey。
- 为每个表添加“NewPrimaryKey”列
- 在两个基表上创建密钥标识
- 脚本数据更改“更新表x,设置NewPrimaryKey = y where OldPrimaryKey = z
- 将原始主键重命名为“oldprimarykey”
- 将“NewPrimaryKey”列重命名为“PrimaryKey”
- 脚本返回所有索引和 fkeys
这看起来是个好方法吗? 有谁知道可以对此有所帮助的工具或脚本?
TD:根据附加信息进行了编辑。请参阅此博客文章,其中介绍了 GUID 为主时的一种方法:http://www.sqlmag.com/blogs/sql-server-questions-answered/sql-server-questions-answered/tabid/1977/entryid/12749/Default.aspx
【问题讨论】:
-
你最终选择了哪条路线?除了您所说的之外,应用程序必须确保知道 PrimaryKey 现在是您的新数据类型,而不是 Guid。
标签: sql-server performance indexing guid bigint