【发布时间】:2016-11-23 16:24:34
【问题描述】:
我有一个包含数百万行的巨大表格。
它有一个 GUID RAW(16 字节)列。由于某种原因/疏忽,该表从未有主键约束,并且由于代码中的错误已将重复项插入 GUID 列(以及一些空值)
我想做的是:
- 使用随机生成的 GUID 更新 GUID 为 NULL 的所有行(可能使用 SYS_GUID())
- 使用随机生成的 GUID 更新所有 GUID 重复的行
- 使用 GUID 列向表中添加主键。
不必保留 GUID 值,它们都必须是唯一的。但是有问题的表有大约 3 亿条记录,所以我正在寻找一种不会导致太多停机时间的方法。
谢谢
【问题讨论】:
-
什么构成重复?我们需要知道哪个记录是“原始的”,这样它就不应该被替换。请包括表结构。
-
没有重复行,只有 guid 值重复。因此,一些完全不同的记录具有相同的 guid。
-
您有 3 个相同的 GUID。我们如何知道要更改哪一个,或者应该更改所有 3 个?能发一下表结构吗?