UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Eso debería hacerlo, y realmente está haciendo exactamente lo que es tuyo. Sin embargo, prefiero la sintaxis 'JOIN' para uniones en lugar de múltiples condiciones 'WHERE', creo que es más fácil de leer
En cuanto a correr lento, ¿qué tamaño tienen las mesas? Debería tener índices en tobeupdated.value
y original.value
EDITAR:también podemos simplificar la consulta
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
es abreviatura cuando ambas tablas de una unión tienen un nombre idéntico key
como id
. es decir, un equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join