什么是在SQL Server 2005中将大量数据从一个表插入到另一个表的最快方法?

4

我基本上想要从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

这需要相当长的时间(10百万条记录需要1小时,而从有索引的表到没有索引的表只需要20分钟)。

有什么最好的方法吗?

谢谢!

2个回答

5

我认为每次插入数据都会重新计算索引,你可以尝试禁用索引,进行批量插入,然后再启用它们。看看这是否有效。

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

可能需要更好地格式化一下,现在第二个“ALTER INDEX”上面的所有内容都将被注释掉。 - Brian Sullivan
我同意...在加载期间禁用或删除/添加目标的索引。 - Zachary

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接