添加顺序标识列时进度缓慢

时间:2011-05-14 20:24:29

标签: sql sql-server-2005 data-warehouse etl

我们有800万行表,我们需要为它添加一个顺序id列。它用于数据仓库。

从测试开始,我们知道如果删除所有索引(包括主键索引),添加新的顺序id列会快10倍。我仍然没有弄清楚为什么删除索引会有助于添加标识列。

以下是添加标识列的SQL:

ALTER TABLE MyTable ADD MyTableSeqId BIGINT IDENTITY(1,1)

但是,有问题的表有依赖关系,因此我不能删除主键索引,除非我删除所有FK约束。因此添加标识列。

  • 添加标识列时是否有其他方法可以提高速度,以便客户端停机时间最短?

  • 有没有办法在不锁定表的情况下添加标识列,以便该表可以访问,或者至少可以查询?

数据库是SQL Server 2005 Standard Edition。

1 个答案:

答案 0 :(得分:0)

向表中添加新列将获取Sch-M(架构修改)锁定,该锁定将阻止在操作期间对表的所有访问。

在操作期间将数据库切换为批量记录或简单模式可能会带来一些好处,但当然,只有当您意识到这将对备份/恢复策略产生的影响时才会这样做