Próbuję zaktualizować jedną tabelę MySQL na podstawie informacji z innej.
Mój originalstół wygląda następująco:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
A tobeupdatedtabela wygląda tak:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Chcę zaktualizować idw tobeupdatedz idze originalna podstawie value(ciągi przechowywane w VARCHAR(32)polu).
Mam nadzieję, że zaktualizowana tabela będzie wyglądać następująco:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
Mam zapytanie, które działa, ale jest bardzo wolne:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
To maksymalizuje mój procesor i ostatecznie prowadzi do przekroczenia limitu czasu z tylko ułamkiem wykonanych aktualizacji (jest kilka tysięcy wartości do dopasowania). Wiem, że dopasowywanie według valuebędzie wolne, ale to jedyne dane, które muszę dopasować.
Czy istnieje lepszy sposób aktualizowania takich wartości? Mógłbym utworzyć trzecią tabelę dla połączonych wyników, gdyby to było szybsze?
Próbowałem MySQL - Jak mogę zaktualizować tabelę wartościami z innej tabeli? , ale to nie pomogło. Jakieś pomysły?
Z góry dziękujemy za pomoc nowicjuszowi MySQL!