Ich versuche, eine MySQL-Tabelle basierend auf Informationen einer anderen zu aktualisieren.
Mein originalTisch sieht aus wie:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
Und der tobeupdatedTisch sieht aus wie:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Ich möchte aktualisieren idin tobeupdatedmit dem idvon originalbasierend auf value(Strings in gespeicherten VARCHAR(32)Feld).
Die aktualisierte Tabelle sieht hoffentlich so aus:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
Ich habe eine Abfrage, die funktioniert, aber sie ist sehr langsam:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
Dies maximiert meine CPU und führt schließlich zu einem Timeout mit nur einem Bruchteil der durchgeführten Aktualisierungen (es gibt mehrere tausend übereinstimmende Werte). Ich weiß, dass das Matching nach valuelangsam sein wird, aber dies sind die einzigen Daten, die ich zusammenpassen muss.
Gibt es eine bessere Möglichkeit, solche Werte zu aktualisieren? Ich könnte eine dritte Tabelle für die zusammengeführten Ergebnisse erstellen, wenn das schneller wäre?
Ich habe MySQL ausprobiert. Wie kann ich eine Tabelle mit Werten aus einer anderen Tabelle aktualisieren? , aber es hat nicht wirklich geholfen. Irgendwelche Ideen?
Vielen Dank im Voraus, dass Sie einem MySQL-Neuling geholfen haben!
valuehat momentan keinen Index.