MySQLテーブルに多数の行を高速に挿入する最速の方法とは?
MySQLで大量の行を効率よくテーブルに挿入したい場合、INSERT INTO文を1回だけ実行し、複数の値セットをカンマ(,)で区切って指定する方法が最も高速です。INSERT文を1行ずつ繰り返し実行すると、そのたびにSQLの解析やネットワーク通信のコストが発生しますが、複数行挿入(バルクインサート)を使えばこれらのオーバーヘッドを大幅に削減できます。
最速の挿入方法の構文
insert into yourTableName values(NULL,'yourValue1',yourValue2),(NULL,'yourValue1',yourValue2),....N;
このように、1つのINSERT INTO文の中に複数の行データを括弧で囲んで列挙するだけで、まとめて挿入が可能です。AUTO_INCREMENTカラムにはNULLを指定することで、自動的に連番が採番されます。
実際の手順とサンプル
1. テーブルを作成する
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable1839
(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(20),
ClientAge int
);
Query OK, 0 rows affected (0.00 sec)2. 複数行を一度に挿入する
次に、INSERT INTO文を1回だけ実行して、8件のレコードをまとめて挿入します。
mysql> insert into DemoTable1839 values(NULL,'Chris',29),(NULL,'Chris',29),(NULL,'Chris',29),(NULL,'Chris',29),(NULL,'Chris',29),(NULL,'Chris',29),(NULL,'Chris',29),(NULL,'Chris',29); Query OK, 8 rows affected (0.00 sec) Records: 8 Duplicates: 0 Warnings: 0
「Query OK, 8 rows affected」と表示され、8行すべてが1回の実行で登録されたことがわかります。
3. 挿入結果を確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1839;
実行すると、次のような出力が得られます。
+----------+------------+-----------+ | ClientId | ClientName | ClientAge | +----------+------------+-----------+ | 1 | Chris | 29 | | 2 | Chris | 29 | | 3 | Chris | 29 | | 4 | Chris | 29 | | 5 | Chris | 29 | | 6 | Chris | 29 | | 7 | Chris | 29 | | 8 | Chris | 29 | +----------+------------+-----------+ 8 rows in set (0.00 sec)
まとめ
MySQLで多数の行を挿入する際は、INSERT INTOを何度も実行するのではなく、1つのINSERT文に複数のVALUESをカンマ区切りで指定するバルクインサートを活用しましょう。SQLの発行回数が減るため、処理速度が大幅に向上し、特に大量データの一括登録時に効果を発揮します。
-
MySQLテーブルにJSONデータを挿入する方法
MySQLでは、JSON型のカラムを作成することで、構造化されたデータをそのまま保存できます。ここでは、JSON型カラムを持つテーブルを作成し、実際にデータを挿入・取得する手順を解説します。 1. JSON型カラムを持つテーブルを作成する まず、JSON型のカラム「ListOfNames」を持つテーブルを作成します。 mysql> create table DemoTable1832 ( ListOfNames JSON ); Query OK,
-
MySQLでテーブルAとBを比較し、Bに存在しないデータをテーブルCに挿入する方法
MySQL:テーブルAとBを比較し、Bに存在しないデータをCへ挿入する方法テーブルAのデータとテーブルBを比較し、Bに存在しないレコードだけをテーブルCに挿入したい場合は、LEFT JOIN(左外部結合)を使うのが最もシンプルで確実な方法です。ここでは、3つのテーブル(demo20=テーブルA、demo21=テーブルB、demo22=テーブルC)を使って、具体的な手順を順番に解説します。ステップ1:テーブルA(demo20)を作成するまず、比較元となる最初のテーブルを作成します。mysql> create table demo20 −> ( −> id