添加列 - SQL Server表

时间:2017-02-09 11:25:06

标签: sql sql-server ssis

我被要求调查我的一位同事一次又一次地完成的手动过程。

他有时需要在一张大表(2亿行)上添加一个新列,这需要他超过1小时。在您提出之前,是的,列可以为空,但有时新列将包含90%的数据。

不是在现有表中添加新列,而是......

  1. 创建新表
  2. 从旧表中选择(*)(插入新的)
  3. 将新列添加为其脚本
  4. 的一部分

    然后他删除旧表并将新表重命名为原始表,添加索引然后压缩。他说这样快得多。

    如果这是最好的方式,那么我将尝试编写SSIS包以尝试使流程更加无缝

    欢迎任何建议!

    由于

2 个答案:

答案 0 :(得分:0)

创建一个新的表结构并将所有数据移动到该表并删除前一个表只是一些数据的好方法,您可以通过SQL Server中的向导来完成。
但这是解决这个问题的最糟糕方式(数以百万计的数据)。

对于大量数据(数百万条记录),您应该使用“Alter Table”。

Alter Table MyTable
   ADD NewColumn nvarchar(10) null

新列将作为最后一列添加到表中。 如果您使用此脚本需要的时间少于一秒,因为所有数据都不会移动,您只需在表中添加一个新列。

但如果您使用上面提到的数百万条数据记录的向导方法,则需要数小时。

答案 1 :(得分:0)

正如阿里所说

alter Table MyTable ADD NewColumn nvarchar(10) null

然后填写90%的数据。因为他已经有一张桌子和他正在加入的钥匙,所以这就是他所需要的:

UPDATE MyTable
SET [NewColumn] = b.[NewColumn]
FROM MyTable a INNER JOIN NewColumnTable b ON a.[KeyField]= b.[KeyField]

会快得多。你可以在SSIS中做到这一点,但如果这种情况发生了很多,那么对于几行SQL来说并不值得。