Estoy intentando actualizar una tabla MySQL en función de la información de otra.
Mi original
mesa se parece a:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
Y la tobeupdated
mesa se ve así:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Quiero actualizar id
en tobeupdated
el id
de original
base en value
(cadenas almacenadas en el VARCHAR(32)
campo).
Con suerte, la tabla actualizada se verá así:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
Tengo una consulta que funciona, pero es muy lenta:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
Esto maximiza mi CPU y eventualmente conduce a un tiempo de espera con solo una fracción de las actualizaciones realizadas (hay varios miles de valores para coincidir). Sé que la comparación value
será lenta, pero estos son los únicos datos que tengo para combinarlos.
¿Existe una mejor manera de actualizar valores como este? Podría crear una tercera tabla para los resultados combinados, si fuera más rápido.
Probé MySQL - ¿Cómo puedo actualizar una tabla con valores de otra tabla? , pero realmente no ayudó. ¿Algunas ideas?
¡Gracias de antemano por ayudar a un principiante de MySQL!