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

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の発行回数が減るため、処理速度が大幅に向上し、特に大量データの一括登録時に効果を発揮します。

  1. MySQLテーブルにJSONデータを挿入する方法

    MySQLでは、JSON型のカラムを作成することで、構造化されたデータをそのまま保存できます。ここでは、JSON型カラムを持つテーブルを作成し、実際にデータを挿入・取得する手順を解説します。 1. JSON型カラムを持つテーブルを作成する まず、JSON型のカラム「ListOfNames」を持つテーブルを作成します。 mysql> create table DemoTable1832     (     ListOfNames JSON     ); Query OK,

  2. 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