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

时间:2009-06-05 19:42:26

标签: sql-server insert bulk

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

我目前的方法是显而易见的INSERT / SELECT:

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分钟)。

最好的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

Check out this at StackOverflow

这应该可以帮助您将数据插入到1000块中。我也喜欢“禁用索引的想法”