【发布时间】:2017-01-02 15:18:40
【问题描述】:
我在 SQL Server 2012 中更改表时遇到问题,将允许 NULL 的 04 列添加到具有 340 列和大约 1.66 亿行和 01 个非聚集索引的大表需要很长时间
此问题仅在还原后特定表发生。 我正在等待执行 10 个小时,但它还没有完成,所以我必须取消它以进行更多调查。这很奇怪,因为脚本真的很简单,如下所示,我们之前已经成功完成了:
alter table sample_database.sample_schema.sample_table
add column_001 int null
,column_002 numeric(18,4) null
,column_003 nvarchar(500) null
,column_004 int null;
我的问题是:
- 为什么会发生奇怪的事情?
- 与我们的部署包有关,如何解决?我们已经完成了使用新列创建新表并加载数据的解决方法。但这对我们不起作用。
- 以后如何预防这个问题?
非常感谢大家,
【问题讨论】:
-
在我的情况下,添加的列允许为 NULL,因此它们不需要在具有默认值的新列上逐行更新。在您提到的线程中还有一件事,我担心删除当前索引,然后添加新列并最终重新创建索引,这是一个好的解决方案吗?因为据我了解,重新创建索引需要时间。
-
是的,它可以提供帮助。另外,可以肯定的是,这次桌子没有使用
-
你用的是sql 2012吧?
-
尝试将您的代码放入事务中
标签: sql sql-server tsql sql-server-2012 alter-table