MySQLのクエリで大量のデータを素早く作る方法

Mysql-1

2012年07月18日(水)

  大量のデータをなるべく早く作成する方法です。 INSERTクエリをプログラムで回す方法もありますが、 それでは1億データ作成する際にとんでもない時間がかかります。 今回は、簡単にSQLの単純結合を使いデータを作成してみました。 時間的にかなり節約されたので、参考までにどうぞ。      


  さっそくやってみましょう。 sampleテーブルというテーブルで説明します。
構造は、   id data create update   とでもしときましょう。    

簡単なのですぐ終わります。 まずsampleデータに何レコードか登録しておきます。

今回は4レコード登録しておきました。   で、以下のクエリを実行します。

  > select count(*) from sample, sample a2, sample a3, sample a4;   結果は

count:256


  になります。     何を行っているかというと、 単純結合で、

4 * 4 * 4 * 4 = 256件


  となっているのです。   ということは…
  > select count(*) from sample, sample a2, sample a3, sample a4, sample a5, sample a6;  

こうすると…

4 * 4 * 4 * 4 * 4 * 4 = 4096件


  ででん! こうなるわけです!!   あとはこのselectした値をinsertすればいいので、
  > insert into sample  (select sample.id, > sample.data, > sample.create > sample.update > from sample, sample a1, sample a2, sample a3, sample a4);  

とかやると データが256件作成されるわけです。  


  もしidがAUTO INCREMENTであれば、
  > insert into sample  (select sample.id = NULL, > sample.data, > sample.create > sample.update > from sample, sample a1, sample a2, sample a3, sample a4);  

とかやったらいけますね。 簡単です。 これを元データが今回は4件で行いましたが。    

元データが100件だった場合は、

100 * 100 * 100 * 100 = 100000000


  となるわけですわ。  

処理時間は確実に通常のプログラムINSERTより格段に速いので試してみてください。  

では。

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR