Estou tentando atualizar uma tabela do MySQL com base nas informações de outra.
Minha originalmesa se parece com:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
E a tobeupdatedmesa se parece com:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Quero atualizar idem tobeupdatedcom o idde originalbase em value(cordas armazenados em VARCHAR(32)campo).
A tabela atualizada terá a seguinte aparência:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
Tenho uma consulta que funciona, mas é muito lenta:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
Isso maximiza minha CPU e, eventualmente, leva a um tempo limite com apenas uma fração das atualizações realizadas (há vários milhares de valores para corresponder). Sei que a correspondência valueserá lenta, mas esses são os únicos dados que tenho para combiná-los.
Existe uma maneira melhor de atualizar valores como este? Eu poderia criar uma terceira tabela para os resultados mesclados, se isso fosse mais rápido?
Tentei o MySQL - como posso atualizar uma tabela com valores de outra tabela? , mas não ajudou muito. Alguma ideia?
Agradecemos antecipadamente por ajudar um novato em MySQL!
valuenão tem índice no momento.