sql >> データベース >  >> RDS >> Sqlserver

tsql - バッチ挿入のパフォーマンス

    処理するコードが少ないとパフォーマンスが向上するように見えるかもしれませんが、最初のオプション (union all) を使用することはお勧めできません。データをテーブルに挿入する前に、すべての選択ステートメントを解析して実行する必要があります。大量のメモリを消費し、かなり少量のデータでも完了するまでに永遠にかかる場合があります。一方、個別の挿入ステートメントは「オンザフライ」で実行されます。

    これを証明する単純なテストを SSMS で実行します。4 つのフィールドを持つ単純なテーブルを作成し、20k 行を挿入してみてください。 2 番目のソリューションは数秒で実行されますが、最初のソリューションは... :) と表示されます。

    もう 1 つの問題は、一部の行でデータが正しくない場合 (型の不一致など)、Conversion failed when converting the varchar value 'x' to data type int. のようなエラーが表示されることです。 、ただし、どの行が失敗したかはわかりません。自分で見つける必要があります。しかし、個別の挿入を使用すると、どの挿入が失敗したかを正確に知ることができます。




    1. Oracle PL/SQLプロシージャの実行速度がSQLより遅い

    2. ASCII()の例– MySQL

    3. MySQL CRC32()関数–例

    4. 非常に大きなテーブルでのデータ型の絞り込み