表中有1千万条数据,现在要在该表中新增一个字段,并将这个字段的值初始为0除了update之外还有好的方法吗,update太慢并会产生大量的日志。

解决方案 »

  1.   

    alter table tablename add column columnName int default 0
      

  2.   

    直接可以设置默认值的
    其实最方便的还是去SSMS操作
      

  3.   


    default 对之前的数据是没有用的,只有新插入的才会初始化为0
      

  4.   


    应该加一个not null就行了。
      

  5.   

    好像是耶
    create table a
    (
    id int 
    )
    insert into a values(2)
    alter table a add  b int default 0 
    alter table a add  c int default 0 not nullselect * from a
    /*
    id,b,c
    2,NULL,0(1 行受影响)
      

  6.   

    alter table table_name add column_name int not null default 0
      

  7.   

    经测试,效果跟update一样,不知道还有没有其它好的方法
      

  8.   

    可以考虑多线程把数据load到另外一个新表中,只做插入工作。
    假设之前表中有一个ID列,上面有Clustered Index,可以考虑居于ID为条件的拆分,插入。
    如果Server上有多个CPU,这种方法的效率可能会好些。