1. ホーム
  2. マイスル

[解決済み】複数のシングルINSERTと1つの複数行のINSERTはどちらが速いですか?

2022-04-13 19:05:16

質問

MySQLにデータを挿入する私のコードの一部を最適化しようとしています。1つの巨大な複数行のINSERTを作るためにINSERTを連鎖させるべきでしょうか、それとも複数の別々のINSERTの方が速いのでしょうか?

どのように解決するのですか?

https://dev.mysql.com/doc/refman/8.0/en/insert-optimization.html

行の挿入に要する時間は、以下の要素によって決定されます。数値はおおよその割合を示しています。

  • 接続する。(3)
  • サーバーにクエリーを送信する。(2)
  • クエリのパース (2)
  • 行を挿入する。(1×行のサイズ)
  • インデックスを挿入する。(1 × インデックス数)
  • 閉じる (1)

このことから、1つの大きなステートメントを送信することで、挿入ステートメントごとに7つのオーバーヘッドを節約できることは明らかであり、さらにテキストを読むとこうも書かれています。

同じクライアントから同時に多くの行を挿入する場合、複数のVALUESリストを持つINSERT文を使用して、一度に複数の行を挿入します。これは、個別の1行のINSERT文を使用するよりもかなり高速です(場合によっては何倍も高速です)。