2009-06-05 4 views
3

私は基本的に、SQL Server 2005のあるデータベースのテーブルから、同じSQL Serverインスタンス内の別のデータベースに同じ構造(しかし多くのインデックス)を持つ別のテーブルにデータをコピーしようとしています。あるテーブルから別のテーブルへデータを読み込むための最も速い方法は何ですか?

私の現在のアプローチがある明白なINSERT/SELECT:それはへのインデックスを持つテーブルからそれを行うために20分を要した一方で、千万レコードを永遠に、およそ、(1時間かかり

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 

1人はいない)。

これを行うにはどうすればよいですか?

ありがとうございます!

答えて

4

私はすべてのインサートでインデックスが再計算されると思います。インデックスを無効にして、一括挿入してから再度有効にしてください。それは

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

のように右、少し良くすることをフォーマットしたい場合があります参照してください。 2番目の「ALTER INDEX」より上のものはコメントアウトされます。 –

+0

私は同意します...ロード中に目的地にインデックスを無効にするか、ドロップ/追加します。 – Zachary

1
あなたが1000のチャンクにデータを挿入するに役立つはず

Check out this at StackOverflow

を動作するか私も「無効インデックスアイデア」

関連する問題