値に基づいて別の MySQL テーブルを更新する
1 つの MySQL テーブル「更新予定」を別のテーブルの値で簡単に更新したいと考えています。 、「オリジナル」、VARCHAR(32) フィールドに格納された一致する文字列に基づきます。 'value.'
初期のクエリとパフォーマンスの問題
最初に、'tobeupdated' を更新するために次のクエリを試行しました:
UPDATE tobeupdated, original SET tobeupdated.id = original.id WHERE tobeupdated.value = original.value
成功しても、このクエリは時間がかかり、必要なクエリのほんの一部しか処理されませんでした。
最適化されたクエリ
パフォーマンスを向上させるには、次の最適化されたクエリを検討してください:
UPDATE tobeupdated INNER JOIN original ON (tobeupdated.value = original.value) SET tobeupdated.id = original.id
最適化されたクエリについて
「INNER JOIN」構文では次のことが可能です2 つのテーブル間の結合条件を明示的に指定することで、より効率的なデータ取得が可能になります。さらに、「tobeupdated.value」フィールドと「original.value」フィールドのインデックスを作成すると、処理が大幅に高速化されます。
簡略化されたクエリ
さらに単純なソリューションの場合は、 'USING' 句:
UPDATE tobeupdated INNER JOIN original USING (value) SET tobeupdated.id = original.id
'USING' は、等結合は、両方のテーブル間で同じ名前の列を自動的に照合することによって行われます。この場合、「tobeupdated」と「original」の両方に「value」列があります。
追加の考慮事項
パフォーマンスを最適化するために、関連する列で適切なインデックス カバレッジを確保してください。テーブルが非常に大きい場合は、マージ結果用に 3 番目のテーブルを作成することを検討してください。ただし、必ずしも速度が向上するとは限りません。
以上が別のテーブルの一致する値に基づいて MySQL テーブルを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。