MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【MySQL】単一のクエリで複数の値を高速に挿入する最速の方法

はじめに

MySQLで大量のデータを登録したい場合、INSERT文を何度も繰り返し実行する書き方は避けるべきです。この記事では、単一のクエリで複数の値を高速に挿入する最適な方法を実例付きで解説します。

非推奨な書き方

以下のように、INSERT文を個別に何度も実行する方法は、通信やパースのオーバーヘッドが大きく、処理速度が遅くなるため推奨されません。

insert into yourTableName values(yourValue1,yourValue2,...N);
insert into yourTableName values(yourValue1,yourValue2,...N);
insert into yourTableName values(yourValue1,yourValue2,...N);
.
.
.
N

最速の挿入方法:複数行INSERT

単一のクエリで複数の値を挿入する最も速い方法は、値のセットをカンマで区切ってまとめて指定する「複数行INSERT(一括挿入)」です。

insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N),
(yourValue1,yourValue2,...N),...................N;

この方法ならデータベースとのやり取りが1回で済み、SQLの解析やインデックス更新の負荷も大幅に削減できます。特に大量データの一括登録時には、顕著なパフォーマンス向上が期待できます。

実際に試してみよう

1. テーブルを作成する

まず、サンプル用のテーブルを作成します。

mysql> create table DemoTable1466
-> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(20),
    -> Age int
    -> );
Query OK, 0 rows affected (0.98 sec)

2. 複数のレコードを一括挿入する

次に、INSERTコマンドを使って3件のレコードを一度に挿入します。

mysql> insert into DemoTable1466(Name,Age) values('Chris',25),('David',29),('Mike',32);
Query OK, 3 rows affected (0.10 sec)
Records: 3 Duplicates: 0 Warnings: 0

3. 挿入結果を確認する

SELECT文ですべてのレコードを表示して確認します。

mysql> select * from DemoTable1466;

実行結果は以下のとおりです。

+----+-------+------+
| Id | Name | Age |
+----+-------+------+
| 1 | Chris | 25 |
| 2 | David | 29 |
| 3 | Mike | 32 |
+----+-------+------+
3 rows in set (0.00 sec)

まとめ

MySQLで複数のレコードを挿入する際は、INSERT文を分割して実行するのではなく、値のセットをカンマで区切って1つのクエリにまとめることで、実行速度を大幅に改善できます。バッチ処理や大量データの初期投入などを行う場合は、ぜひこの複数行INSERTを活用してください。

  1. MySQLで複数のレコードをすばやく一括挿入するクエリの書き方

    MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル

  2. MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法

    はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実