Estoy tratando de actualizar una tabla MySQL basada en información de otra.Actualizar una tabla MySQL con valores de otra
Mi mesa original
parece:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
Y la mesa tobeupdated
parece:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Quiero actualizar id
en tobeupdated
con el id
de original
basado en value
(cadenas almacenadas en VARCHAR(32)
campo).
La tabla actualizada de esperar que el siguiente aspecto:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
Tengo una consulta que funciona, pero es muy lento:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
Este maxes mi CPU y finalmente lleva a un tiempo de espera con solo una fracción de las actualizaciones realizadas (hay varios miles de valores para que coincidan). Sé que la coincidencia por value
será lenta, pero este es el único dato que tengo para unirlos.
¿Existe alguna forma mejor de actualizar valores como este? Podría crear una tercera tabla para los resultados combinados, si eso fuera más rápido?
Intenté MySQL - How can I update a table with values from another table?, pero en realidad no me ayudó. ¿Algunas ideas?
¡Gracias de antemano por ayudar a un principiante de MySQL!
¿Su columna de 'valor' tiene un índice? – noodl
Hola noodl; no, 'value' no tiene un índice en este momento. – Superangel