処理するコードが少ないとパフォーマンスが向上するように見えるかもしれませんが、最初のオプション (union all) を使用することはお勧めできません。データをテーブルに挿入する前に、すべての選択ステートメントを解析して実行する必要があります。大量のメモリを消費し、かなり少量のデータでも完了するまでに永遠にかかる場合があります。一方、個別の挿入ステートメントは「オンザフライ」で実行されます。
これを証明する単純なテストを SSMS で実行します。4 つのフィールドを持つ単純なテーブルを作成し、20k 行を挿入してみてください。 2 番目のソリューションは数秒で実行されますが、最初のソリューションは... :) と表示されます。
もう 1 つの問題は、一部の行でデータが正しくない場合 (型の不一致など)、Conversion failed when converting the varchar value 'x' to data type int.
のようなエラーが表示されることです。 、ただし、どの行が失敗したかはわかりません。自分で見つける必要があります。しかし、個別の挿入を使用すると、どの挿入が失敗したかを正確に知ることができます。