我已经看到很多关于向大型数据库表添加新主键列的信息,但我的情况有些不同。
我有一个没有主键的大表(约 90,000,000 条记录)。但是,它确实有一个“RowID”列,它是一个标识列。它还在 RowID 列上有一个唯一索引。
我所有的研究都表明,没有主键的表是一种糟糕的设计,如果可能的话应该去掉。在我的特殊情况下;这会导致问题,因为如果找不到主键,实体框架会将表映射为只读视图。
我想在 RowID 列上的表中添加一个主键约束。我希望因为它没有添加新列,并且该列上已经有一个唯一索引,所以这将是一个小操作;然而,从测试运行来看,这将需要很长时间。
长时间无法访问此表会导致整个业务出现问题。我知道另一种选择是使用新模式创建一个新表,并将所有数据从旧数据复制到新数据。但这也会导致我们需要长时间锁定表。
当您已经有一个带有唯一索引的标识列时,有没有办法更快地添加主键约束?