猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

DataBase MySQL

MySQLの連続INSERTを高速にする

投稿日:

もししらなければ確実に、そして恐ろしく効果を発揮できると思います。

INSERTを連続実行する際にボトルネックとなるのはコミットです。
オートコミットをオフにするという手もあるのですが、
INSERTをまとめることで、コミットの回数を減らすだけでも確実に効果があるはずです。

具体的には

insert into TABLE_NAME(col1,col2,col3) vaues ('aaa1','bbb1','ccc1');
insert into TABLE_NAME(col1,col2,col3) vaues ('aaa2','bbb2','ccc2');
insert into TABLE_NAME(col1,col2,col3) vaues ('aaa3','bbb3','ccc3');

とある場合は

insert into TABLE_NAME(col1,col2,col3) vaues ('aaa1','bbb1','ccc1'),('aaa2','bbb2','ccc2'),('aaa3','bbb3','ccc3');

とすればよいのです。

私の場合、4万件が約3分かかっていたのが、
20件毎にまとめるだけで約8秒になりました。
20倍以上の効果がありました!

もちろん環境や設定によりまとめる数は調整が必用と思われます。

INSETが遅すぎてお困りのかた。
是非お試しください!!

Gooleアドセンス用336

Gooleアドセンス用336

-DataBase, MySQL
-

執筆者:

関連記事

select insert

私は以前SQLの順番にinsert selectと呼んでいて、笑われたことがあります。 select insertだ!と当時の上司に言われました。 なるほど、副問い合わせのselectが実行されて、そ …

mysql

CentOS6.4にMySQL5.6をインストールする

INDEX1 RPMのダウンロード2 tarの解凍3 rpmをyumでインストール4 サービス名が違う?5 mysql_secretにrootの初期パスワードはある6 mysql_secure_ins …

mysql

MySQLで相関サブクエリを実行する

相関サブクエリとは、SQLの実行結果の行と行を比較することです。 ある行とある行の時間差を求めることで何秒間隔でデータが登録されているかがわかったり、 ある行とある行の売上差を求めることで、売上の上が …

mysql

MySQLのmysqldumpのエクスポートとインポート

ダンプはバックアップやテストに大活躍してくれます。 しかし、データベース単位でエクスポートしても、インポートには随分時間がかかったりします。 その辺は別の機会にしますが、今回は基本コマンドのまとめです …

sqlserver

「.NET」と「ASP.NET」からのSQL Serverへのコネクションを確認する(2)

「.NET」と「ASP.NET」からの接続には大きな違いがあります。 それは普通の?(exe形式の)アプリケーションか、Webアプリケーションかです。 この違いはアプリの終了というタイミングに大きく影 …