一个表有15个字段,两个nvarchar(200),一个nvarchar(100),一个varchar(50),其它都是int或datetime,主键是int型聚集索引
现在要对这个varchar(50)字段全部更新为null值,该字段已有索引。
数据库有5000W数据,求最快方案,300分。

解决方案 »

  1.   

    DROP 索引
    UPDATE TB SET [varchar(50)字段] = NULL
    好像不必建立索引了,因为没用
      

  2.   

    alter table tb add col1 varchar(50)
    alter table tb drop column col2 
      

  3.   

    技术分300,给我299就好,谢谢
    我觉得是删了这个字段,再加个默认值为null的字段。纯乱猜,勿喷。
      

  4.   

    5000W 。  换列名,重建个NULL的列,换成原来的列名,反正没用了。  0.0 !
      

  5.   

    alter table tb drop col
    alter table tb add col varchar(50) null
      

  6.   

    DROP 索引
    UPDATE TB SET  字段  = NULL
      

  7.   

    大叔  据说用 XML更新的速度还可以创建一个临时表 然后向临时表里面varchar(50) 的字段插入空值 然后向实体表里面插入。类似这样Create PROCEDURE UP_Book_Insert
    (
        @BookId        INT,
        @ChapterXml    XML

    AS
    BEGIN
    CREATE TABLE #table
    (
        ChapterId        INT,
        ChapterName        VARCHAR(255),
        Price            INT
    );
    INSERT #table
        SELECT *
        FROM   (
                   SELECT X.C.value('Id[1]', 'int') AS ChapterId,
                          X.C.value('Name[1]', 'varchar(255)') AS ChapterName,
                          X.C.value('Price[1]','int') AS Price
                   FROM   @ChapterXml.nodes('Chapter') AS X(C)    --注意:这里的X(C)命名空间是需要的
               ) t;    
        INSERT INTO tbChapter(BookId,ChapterId,ChapterName,Price) 
        SELECT @BookId,ChapterId,ChapterName,Price from #table;
    END