ブログ投稿のバッチ処理のトランザクションのパフォーマンス分析を行っていますが、バッチ挿入ステートメントを使用すると、同等の個々の SQL ステートメントよりもはるかに遅く実行されることに気付きました。
以下のように1000行を挿入すると、約3秒かかります
INSERT TestEntities (TestDate, TestInt, TestString) VALUES
('2011-1-1', 11, 'dsxcvzdfdfdfsa'),
('2011-1-1', 11, 'dsxcvzdfdfdfsa'),
('2011-1-1', 11, 'dsxcvzdfdfdfsa')
以下のように 1000 行を挿入すると 130 ミリ秒かかります
INSERT TestEntities (TestDate, TestInt, TestString) VALUES ('2011-1-1', 11, 'dsxcvzdfdfdfsa')
INSERT TestEntities (TestDate, TestInt, TestString) VALUES ('2011-1-1', 11, 'dsxcvzdfdfdfsa')
INSERT TestEntities (TestDate, TestInt, TestString) VALUES ('2011-1-1', 11, 'dsxcvzdfdfdfsa')
これは、テーブルで初めてバッチ挿入を使用したときにのみ発生するように見えますが、再現可能です。
また、挿入するデータはランダムであることに注意してください(ただし、両方のクエリで同じです)
編集:
この場合に使用するダミーのランダムデータを使用した私の再現ケースは次のとおりです: https://gist.github.com/2489133