2012-03-22 13 views
1

大量のデータをデータベースに挿入しようとしていますが、これを最も効率的な方法で実行したいと考えています。今、私はオブジェクトをarraylistに格納しています.Arrayistのサイズが5000になると、すべての要素を反復し、複数の値を持つ1つのmysql挿入ステートメントを作成し、executeUpdate()関数を呼び出します。私はそれを行うための高速な方法があるのだろうか、例えば、データを配列に格納する代わりに、ローカルのCSVファイルを作成してLOAD DATA LOCAL INFILEを一度使うか、配列リスト。 あなたは私にアドバイスできますか?どちらが最高ですか、それとも他の方法がありますか?データベースにデータを挿入する最も効率的な方法は?プリペアドステートメント、バルクロードまたは複数挿入ステートメント?

ありがとうございました。

答えて

0
  • innodbの場合:トランザクションを使用して、挿入のすべて/多くを最初の最適化として実行します。これにより、パフォーマンスが大幅に向上し、すでに十分な可能性があります。
  • LOAD DATA ...は非常に良いオプションです。それはまた、トランザクション内のすべてを行い、帯域幅を賢明に使用します。
  • あなたは次のように、1つのSQLコマンド内で複数の値を挿入できます。

    INSERT INTO talbe_blubb (col_a,col_b) VALUES (1,3), (2,2); 
    

私はわかりませんが、準備された文は、テーブルに簡単な挿入の場合、いずれかの優位性を得る可能性があるとは思いません。

+1

はい、LOAD DATA INFILEを使用してください。 http://dev.mysql.com/doc/refman/5.1/en/insert-speed.htmlおよびhttp://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-も参照してください。ファイルを安全にinnodb-with-load-data-infile / – Daan

関連する問題