複数の MySQL テーブルを同じ値で効率的に更新するにはどうすればよいですか?

DDD
リリース: 2024-11-04 05:29:29
オリジナル
746 人が閲覧しました

How can I efficiently update multiple MySQL tables with identical values?

複数の MySQL テーブルにわたる同時更新

非正規化の目的で同一の値の更新が必要な複数のテーブルを操作する場合、実行が非効率になる可能性があります。各テーブルの個別の更新。幸いなことに、MySQL には、複数テーブルの更新を使用して、これらの更新を 1 つの操作に結合する方法が用意されています。

次のシナリオを考えてみましょう:

<code class="sql">-- Table One Update
UPDATE Table_One
SET win = win+1, streak = streak+1, score = score+200
WHERE userid = 1 AND lid = 1 LIMIT 1

-- Table Two Update
UPDATE Table_Two
SET win = win+1, streak = streak+1, score = score+200
WHERE userid = 1 LIMIT 1</code>
ログイン後にコピー

この例では、両方のテーブルに同じものが必要です。値は、表 2 の「lid」フィールドがないことを除いて更新されます。これらの更新を結合するには、次のように複数テーブルの更新を使用できます。

<code class="sql">UPDATE Table_One a INNER JOIN Table_Two b ON (a.userid = b.userid)
SET
  a.win = a.win+1, a.streak = a.streak+1, a.score = a.score+200,
  b.win = b.win+1, b.streak = b.streak+1, b.score = b.score+200
WHERE a.userid = 1 AND a.lid = 1 AND b.userid = 1</code>
ログイン後にコピー

このクエリでは、「INNER JOIN」ステートメントを使用して、「userid」列で 2 つのテーブルを結合します。一致する行のみが更新されるということです。 「SET」句は、両方のテーブルの更新値を定義します。

複数のテーブルの更新は「LIMIT」句をサポートしていないため、意図したよりも多くの行が更新される可能性があることに注意することが重要です。このような場合、更新をより詳細に制御するには、ストアド プロシージャまたはトランザクションの使用を検討してください。

以上が複数の MySQL テーブルを同じ値で効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート