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

これには、ほぼ永遠に時間がかかります (1,000 万レコードの場合は 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 に答える