UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Isso deve fazê-lo, e realmente está fazendo exatamente o que o seu é. No entanto, prefiro a sintaxe 'JOIN' para junções em vez de várias condições 'WHERE', acho que é mais fácil de ler
Quanto à execução lenta, quão grandes são as tabelas? Você deve ter índices em
tobeupdated.value
e original.value
EDIT:também podemos simplificar a consulta
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
é uma abreviação quando ambas as tabelas de uma junção têm um nome idêntico de key
como id
. ou seja, um equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join