Sql server 将数据从一个表插入到另一个表的最快方法是什么?(SQL Server 2005)

Sql server 将数据从一个表插入到另一个表的最快方法是什么?(SQL Server 2005),sql-server,insert,bulk,Sql Server,Insert,Bulk,我基本上是在尝试将数据从SQLServer2005中一个数据库中的表复制到另一个表,该表具有相同的结构,但在同一SQLServer实例中的另一个数据库中有很多索引 我目前的做法是显而易见的插入/选择: set identity_insert TargetDBName.dbo.TableName on insert into TargetDBName.dbo.TableName ([FieldsList]) select [FieldsList] from TargetDBName.dbo

我基本上是在尝试将数据从SQLServer2005中一个数据库中的表复制到另一个表,该表具有相同的结构,但在同一SQLServer实例中的另一个数据库中有很多索引

我目前的做法是显而易见的插入/选择:

set identity_insert TargetDBName.dbo.TableName on

insert into TargetDBName.dbo.TableName ([FieldsList])
  select [FieldsList] from  TargetDBName.dbo.TableName    

set identity_insert SourceDBName.dbo.TableName off
1000万条记录大约需要1小时,而从有索引的表到没有索引的表则需要20分钟

最好的方法是什么


谢谢

我相信每次插入时都会重新计算索引,您应该尝试禁用索引,执行大容量插入,然后再次启用它们。看看这是否有效

----Disable Index
ALTER INDEX [*INDEX_NAME*] ON *TABLE_NAME* DISABLE
GO
----Enable Index
ALTER INDEX [*INDEX_NAME*] ON *TABLE_NAME* REBUILD
GO

这将有助于您将数据插入到1000个数据块中。我也喜欢“禁用索引”的想法。

可能希望格式更好一些,现在第二个ALTER index上面的所有内容都将被注释掉。我同意。。。在加载过程中禁用或删除/添加目标的索引。