ホームページ >データベース >mysql チュートリアル >JOIN を使用して別のテーブルのデータで MySQL テーブルを効率的に更新するにはどうすればよいですか?
別のテーブルの値を使用して MySQL テーブルを効率的に更新する
ある MySQL テーブルを別のテーブルの情報のみに基づいて更新する必要がある場合値を共有する場合、一般的なアプローチは JOIN を使用することです。ただし、このようなクエリで最適なパフォーマンスを達成するには、慎重な検討が必要です。
次の構造を持つ 2 つのテーブルがあるとします。
Original:
id | value |
---|---|
1 | hello |
2 | fortune |
3 | my |
4 | old |
5 | friend |
tobeupdated:
uniqueid | id | value |
---|---|---|
1 | NULL | something |
2 | NULL | anything |
3 | NULL | old |
4 | NULL | friend |
5 | NULL | fortune |
あなたの目標は、元の対応する値に基づいて id 列を更新することです。次のクエリは簡単に見えるかもしれません:
UPDATE tobeupdated, original SET tobeupdated.id = original.id WHERE tobeupdated.value = original.value
特に大きなテーブルの場合、非常に遅くなる可能性があります。これは、MySQL が一致する行を見つけるために両方のテーブルに対してフル テーブル スキャンを実行する必要があるためです。
パフォーマンスの最適化
パフォーマンスを向上させるには、より効率的なアプローチを使用します。 ON 句を含む JOIN:
UPDATE tobeupdated INNER JOIN original ON (tobeupdated.value = original.value) SET tobeupdated.id = original.id
INNER JOIN を使用すると、MySQL は次のことのみを考慮します。両方のテーブルの一致する行。さらに、両方のテーブルの値列にインデックスが存在することを確認すると、検索に必要な時間を大幅に短縮できます。
簡略化された構文
同じキー名を持つクエリの場合どちらのテーブルでも、簡単にするために USING 句を使用できます。
UPDATE tobeupdated INNER JOIN original USING (value) SET tobeupdated.id = original.id
追加考慮事項
以上がJOIN を使用して別のテーブルのデータで MySQL テーブルを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。