ホームページ > データベース > mysql チュートリアル > 別のテーブルの一致する値に基づいて MySQL テーブルを効率的に更新するにはどうすればよいですか?

別のテーブルの一致する値に基づいて MySQL テーブルを効率的に更新するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-05 12:14:38
オリジナル
809 人が閲覧しました

How Can I Efficiently Update a MySQL Table Based on Matching Values in Another Table?

値に基づいて別の 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 サイトの他の関連記事を参照してください。

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