人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで配列に格納された会員IDの値を、MySQL上のテーブルに一括登録したいと思います。

今まではforを使って1件ずつ登録していたのですが、これだと1万件以上登録させようとすると、
処理に時間がかかってしまいます。

出来るだけ処理時間がかからないSQL文の書き方を、教えていただければと思います。

MySQLは4.1.22で、対象テーブル(user_log)のストレートエンジンはMyISAMです。
登録させようと思っているのは、会員ID(user_id)の他に、登録時間(date)と
PHPで生成した識別コード(code)を登録します。

●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:MyISAM MySQL PHP SQL エンジン
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●35ポイント

MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 5.2.10 INSERT クエリの速度

INSERT の効率化については上記のページにすべてまとまっています。


ファイルからのロードが圧倒的に早いですが、あくまで SQL でやろうと思うと

マルチプルインサートが妥当かと。


2 ● tomo_k
●35ポイント

http://dev.mysql.com/doc/refman/4.1/ja/mysqlimport.html

一番早いと思われる方法はPHPの配列にある情報をいったんテキストファイルに出力しLOAD DATAを使うことだと思います。

http://phpdoc.m-takagi.org/mysqli.set-local-infile-handler.html

http://q.hatena.ne.jp/1144055939

このあたりが参考になるかもしれません。

◎質問者からの返答

LOAD DATAが良さそうだったので、以下(コメント欄)のソースを書きました。しかし、上手く登録出来ません。

この点について、ソースの指摘等がありましたら、お願いします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ