[解決済み】複数のシングル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文を使用するよりもかなり高速です(場合によっては何倍も高速です)。
関連
-
[解決済み】mysql 外部キー制約が不正に形成されているエラー
-
[解決済み] エラー1022 - 書き込みできません; テーブルに重複したキーがあります。
-
[解決済み] SQLSTATE[22003]: 数値の範囲外: 1264 範囲外の値です。
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MySQLの重複レコードを検索する
-
[解決済み] INSERT INTO ...」の部分を繰り返さずに複数行の挿入を行うには?
-
[解決済み] SQLクエリは、複数のテーブルからデータを返す
-
[解決済み] MySQLの多重更新
-
[解決済み] MySQLのdatetimeに挿入する際のPHPのdate()フォーマット
-
[解決済み】MySQLで自動インクリメントフィールドを持つ行をコピーして同じテーブルに挿入するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】1052:フィールドリストの列「id」が曖昧である
-
[解決済み】Fatal error: mysqldをrootで実行する方法は、マニュアルの「セキュリティ」セクションをお読みください。
-
[解決済み】SQL ZOO 各大陸とアルファベット順で1位の国名をリストアップする
-
MySQLとのPython統合でAttributeErrorが発生する: モジュール 'socket' には 'AF_UNIX' という属性がない
-
[解決済み] テーブル 'performance_schema.session_variables' は存在しません。
-
[解決済み] エラー 1044 (42000)。データベース 'db' へのユーザー ''@'localhost'' のアクセスが拒否されました。
-
[解決済み] WindowsでMySQLの画面コンソールをクリアする方法は?
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] エラー1022 - 書き込みできません; テーブルに重複したキーがあります。
-
[解決済み] MySQL エラー 1153 - 'max_allowed_packet' バイトより大きいパケットを受け取りました。