Sql 在表之间进行批量复制的最快方法
我有一个包含列的SQL Server表,称它们为a和B。我创建了一个包含类型列和单值列的新表。我想将现有表中的所有行(有5000万行)复制到新表中,这样第一个表中的每一行在第二个表中有两行(一行用于值A,一行用于值B)。我有一个简单的脚本可以做到这一点Sql 在表之间进行批量复制的最快方法,sql,sql-server-2008,sqlbulkcopy,Sql,Sql Server 2008,Sqlbulkcopy,我有一个包含列的SQL Server表,称它们为a和B。我创建了一个包含类型列和单值列的新表。我想将现有表中的所有行(有5000万行)复制到新表中,这样第一个表中的每一行在第二个表中有两行(一行用于值A,一行用于值B)。我有一个简单的脚本可以做到这一点 insert into NewTable (ResultTypeId, Value) (select @typeA, valueOfA from OldTable union all select @typeB, valueOfB from Ol
insert into NewTable (ResultTypeId, Value)
(select @typeA, valueOfA from OldTable
union all
select @typeB, valueOfB from OldTable)
这种天真的方法大约需要8分钟。有没有更快的方法可以做到这一点?要尝试的事情:
插入到。。。选择
。这里有一个开始:你能用SSIS做这个吗?这将把insert分割成更易于管理的块,因此整个insert没有一个事务。您还可以管理在插入过程中是否检查约束,禁用此项(只要您知道数据不违反约束)也将加快插入速度。是的,SSIS将允许您执行并行加载。如果服务器有大量的CPU和RAM,则使用方便。就我个人而言,我认为SSIS具有很大的学习曲线,并增加了额外的维护/可移植性问题,因此我很少使用它。SP或死亡是我的一般规则。。。