質問: 私は列を持つSQL Serverテーブルを持って、それらをAとBと呼びます。私は型の列と単一の値の列を持つ新しいテーブルを作成しました。私は最初のテーブルの各行に2番目の行(値Aの場合は1つ、値Bの場合は1つ)が存在するように、既存のテーブルからすべての行(5千万もある)を新しいものにコピーします。私はこれを行う簡単なスクリプトを持っています ``` insert into NewTable (ResultTypeId, Value) (select @typeA, valueOfA from OldTable union all select @typeB, valueOfB from OldTable) ``` この素朴なアプローチには約8分かかります。これを行うより速い方法がありますか?
回答: 試してみるもの: 1. 共用体を使用する代わりに、2つのステップでロードします。 (1回のトランザクションで1億回のレコードをプッシュするのは大変です) 2. ロード後になるまで、宛先表に主キーまたは索引を作成しないでください。 3. `insert into ... select`代わりに一括挿入を使用し`insert into ... select` 。開始する場所は次のとおりです。http : //social.msdn.microsoft.com/Forums/sqlserver/en-US/b2b59376-e039-485b-84ef-613122a043f0/bcp-or-bulk-insert-why?forum=transactsql