4

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

我目前的方法是明显的插入/选择:

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

最好的方法是什么?

谢谢!

4

2 回答 2

5

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

----Disable Index
ALTER INDEX [*INDEX_NAME*] ON *TABLE_NAME* DISABLE
GO
----Enable Index
ALTER INDEX [*INDEX_NAME*] ON *TABLE_NAME* REBUILD
GO
于 2009-06-05T19:48:32.490 回答
1

在 StackOverflow 上查看

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

于 2009-06-05T19:50:56.027 回答