UIDのリストを持つ配列(PHPで)があり、そのUIDを持つ行をすでに含んでいるMySQLテーブルをUIDのあるインデックスで更新したい配列。配列内の位置に基づいて複数のMySQL行を更新する
だから、のUIDの私の配列は次のようになります。私は、その後の効果にテーブルを更新したい
[1123,4542,3456,2212,2346,7778,577885,44322]
:
POS | UID
----------
1 |1123
2 |4542
3 |3456
etc
----------
データセット(配列)は、(非常に大きくなる可能性がある1000 +私が更新しているテーブルには、他のデータセットの一部である他のUIDも含まれています(ただし、一意のUIDを持ちます)。
私は明らかにループと更新ステートメントの読み込みでこれを行うことができますが、単一またはほんの数のステートメントでそれを行うより効率的な方法があるのだろうかと思っています。
私は多くの検索を行い、設定/固定数の値や他のデータベーステーブルに基づいて更新するだけの回答を見つけることができますが、配列の長さは更新されるデータセットによって異なります。
ためのアプローチ
みんなありがとうとはかなり満足しているこの方法を行うことによって、明らかなパフォーマンスの不利益があるように表示されません。 **一つの**準備された更新ステートメントを使用し、それを複数回ループで実行します。それが遅すぎる場合は、配列を一括挿入した一時テーブルに格納することができます。 –
ありがとうPaulは、私が作る必要がある可能性がある更新の可能性が高いため、可能な限りループを避けることを望んでいましたが、それを行うより効率的な方法がない場合は、フォールバックの位置として使用します – jTrouble
簡単で簡単な解決策がどのように実行されるか最初にテストします。あなたは積極的に驚くかもしれません。 –