回答編集履歴

2

推敲

2020/04/30 07:07

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  以下参考
2
2
  [MySQL: INSERT...ON DUPLICATE KEY UPDATEまとめ](https://qiita.com/yuzroz/items/f0eccf847b2ea42f885f)
3
3
 
4
- 高速に処理するためにはSQLの発行回数を減らす事ですが、CSVを逐次読み込んでという事なら、Values句に値を並べる事になりますが、それよりも、CSVの取込をCSVの項目と一致した全てテキスト型の項目のワークテーブル(一時テーブルも考慮)を用意して、[LOAD DATA INFILE](https://dev.mysql.com/doc/refman/5.6/ja/load-data.html)で取込し、そのテーブルを元に`insert int select ON DUPLICATE KEY UPDATE`を行うのが一番処理時間の短縮が図れると思います。
4
+ 高速に処理するためにはSQLの発行回数を減らす事ですが、CSVを逐次読み込んでという事なら、Values句に値を並べる事になりますが、それよりも、CSVの取込をCSVの項目と一致した全てテキスト型の項目のワークテーブル(一時テーブルも考慮)を用意して、[LOAD DATA INFILE](https://dev.mysql.com/doc/refman/5.6/ja/load-data.html)で取込し、そのテーブルを元に`insert into select ON DUPLICATE KEY UPDATE`を行うのが一番処理時間の短縮が図れると思います。
5
5
 
6
6
  仮にCSVのエラーチェックなどがあったとしても、そのワークテーブルでSQL一括で行う方が高速です。

1

推敲

2020/04/30 07:07

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  以下参考
2
2
  [MySQL: INSERT...ON DUPLICATE KEY UPDATEまとめ](https://qiita.com/yuzroz/items/f0eccf847b2ea42f885f)
3
3
 
4
- 高速に処理するためにはSQLの発行回数を減らす事ですが、CSVを逐次読み込んでという事なら、Values句に値を並べる事になりますが、それよりも、CSVの取込をCSVの項目と一致した全てテキスト型の項目テーブルを用意して、[LOAD DATA INFILE](https://dev.mysql.com/doc/refman/5.6/ja/load-data.html)で取込し、そのテーブルを元に`insert int select ON DUPLICATE KEY UPDATE`を行うのが一番処理時間の短縮が図れると思います。
4
+ 高速に処理するためにはSQLの発行回数を減らす事ですが、CSVを逐次読み込んでという事なら、Values句に値を並べる事になりますが、それよりも、CSVの取込をCSVの項目と一致した全てテキスト型の項目のワークテーブル(一時テーブルも考慮)を用意して、[LOAD DATA INFILE](https://dev.mysql.com/doc/refman/5.6/ja/load-data.html)で取込し、そのテーブルを元に`insert int select ON DUPLICATE KEY UPDATE`を行うのが一番処理時間の短縮が図れると思います。
5
5
 
6
6
  仮にCSVのエラーチェックなどがあったとしても、そのワークテーブルでSQL一括で行う方が高速です。