UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
それはそれをするはずです、そして実際にそれはあなたのものとまったく同じことをします。ただし、結合には複数の「WHERE」条件よりも「JOIN」構文の方が好きです。読みやすいと思います
実行速度が遅いということですが、テーブルの大きさはどれくらいですか? tobeupdated.valueにインデックスが必要です およびoriginal.value
編集:クエリを簡略化することもできます
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING 結合の両方のテーブルに同じ名前のkeyがある場合は省略形です idなど 。つまり、等結合- https://en.wikipedia.org/ wiki / Join_(SQL)#Equi-join