2016-04-18 7 views
2

大量のデータを選択する必要がある状況(たとえば、1003レコードはID | {"points":"9","votes":"2","breakdown":"0,0,0,1,1"})をPHPで処理して戻す必要があります。問題はそれを効率的に取り戻すことです。私はINSERT ... ON DUPLICATE KEY UPDATEを使って解決策を見ました。UPDATEの解決策を見ました。これはCASEです。他の解決策はありますか?巨大なデータ配列を更新する最も効率的な方法はどれでしょうか?大量のデータをMySQLで更新する

+1

どのようにユーザーの環境が提案されたソリューションに影響しますか? – Strawberry

+0

あなたの質問は明らかではありません....ユーザーのサーバーはどういう意味ですか? –

答えて

0

簡単なアップデートを使用しています。
挿入例外を使用してデータを挿入しようとすると、DBはさらに挿入作業、制約の検証、例外の発生、行の更新、制約の再検証を実行します。 43K行を持つテーブルに対してDUPLICATE KEY UPDATEおよびUPDATEステートメントONに...挿入のための私のローカルPC上の

更新

ファイル名を指定して実行をテストします。

最初のアプローチは40%高速です。
しかし、両方とも速く、その後1.5秒で動作しました。私は、あなたのPHPコードはあなたのアプローチのボトルネックとなり、あなたはMySQL文の速度について心配するべきではないと思います。もちろん、それはテーブルが巨大ではなく、数千万の行がない場合に機能します。

アップデート2

私のローカルPCには、デフォルト設定でのMySQL 5.6を使用しています。 CPU:8Gb

+0

100kのUPDATEクエリがここでの最適な選択であるとは思っていません。tbh –

+0

あなたのコンピュータの仕様やインスタンス変数を投稿していないので、ベンチマークは意味がありません。 – Mjh

関連する問題