我正在尝试将一个列添加到tsql表中,我在c#中使用SMO执行此操作。改变表是好的,但我想将列设置为具有值。该表包含6.5亿行,更新查询将花费一天半的时间来运行。
更新[TempDatabase]。[dbo]。[table1]设置RawSource =' DTP'
这是我在上面运行的查询。
有人能想到更有效的方法吗?
提前致谢。
答案 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')