在表之间进行大容量复制的最快方法



我有一个SQL Server表,它有列,称为a和B。我创建了一个新表,其中有一个类型列和一个值列。我想将现有表中的所有行(共有5000万行)复制到新表中,这样第一个表中的每一行在第二个表中都有2行(一行用于值A,一行用于价值B)。我有一个简单的脚本可以完成这个

insert into NewTable (ResultTypeId, Value)
(select @typeA, valueOfA from OldTable
union all
select @typeB, valueOfB from OldTable)

这种天真的方法大约需要8分钟。有更快的方法吗?

尝试的东西:

  1. 分两步加载,而不是使用并集。(在一笔交易中推送1亿条记录是一笔巨大的交易。)
  2. 直到加载之后,才在目标表上创建主键或索引
  3. 使用大容量插入而不是insert into ... select。从这里开始:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/b2b59376-e039-485b-84ef-613122a043f0/bcp-or-bulk-insert-why?forum=transactsql

最新更新