有效地添加具有值的列

时间:2015-03-16 11:03:15

标签: sql tsql smo

我正在尝试将一个列添加到tsql表中,我在c#中使用SMO执行此操作。改变表是好的,但我想将列设置为具有值。该表包含6.5亿行,更新查询将花费一天半的时间来运行。

更新[TempDatabase]。[dbo]。[table1]设置RawSource =' DTP'

这是我在上面运行的查询。

有人能想到更有效的方法吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

有时,使用新值复制表并在单个命令中重新创建表更有效。此外,您可能希望确保这些操作的日志记录最少。

可能最好的解决方案是在创建列时使用default值:

alter table table1 add RawSource varchar(255) not null default 'DTP';

如果您不希望默认向前移动,可以在添加列后将其删除。

另一种方法使用计算列,但基本上做同样的事情:

alter table table1 add _RawSource varchar(255);

alter table1 add RawSource as (coalesce(_RawSource, 'DTP'));

答案 1 :(得分:0)

在添加列到表格时,我们可以设置默认值,这将适用于所有行

注意:U应该保持 not null 必须,因为如果不是所有行都适用于空值

 alter table  table_name
 add  row_source nvarchar(5) not null default(N'DTP')