1

タームリストとブラックリストの 2 つの MySQL テーブルを取得しました。どちらもフィールド「用語」にインデックスがあり、ブラックリストにはフィールド「ステータス」に別のインデックスがあります。

ステータスが「A」のブラックリストにも表示される用語リストの用語のステータスを「B」に更新したい場合は、次の SQL ステートメントを発行します。

update termlist set status = 'B' where term in (select term from blacklist where status = 'A')

これにより、termlist で完全なテーブル スキャンが実行されます。「内部結合による更新」を使用したいのですが、select ステートメントに where 句があるため使用できません。

そのselectステートメントから一時テーブルを作成し、その一時テーブルで内部結合を更新できることは知っていますが、この更新を何度も行う場合、これはちょっと面倒です。

テーブル全体をスキャンせずに作業を実行できる単一の更新ステートメントはありますか?

4

1 に答える 1