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 - https://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join