我基本上是在尝试将数据从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分钟)。
最好的方法是什么?
谢谢!
答案 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块中。我也喜欢“禁用索引的想法”