Bir MySQL tablosunu diğerinden gelen bilgilere göre güncellemeye çalışıyorum.
Benim originalmasa görünüyor gibi:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
Ve tobeupdatedmasa şöyle görünüyor:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Ben güncelleştirmek istediğiniz idyer tobeupdatedile idgelen originaldayalı value(saklanan dizeleri VARCHAR(32)alanında).
Güncellenen tablo umarız şöyle görünecektir:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
Çalışan bir sorgum var ama çok yavaş:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
Bu, CPU'umu maksimuma çıkarır ve sonunda, gerçekleştirilen güncellemelerin yalnızca bir kısmıyla bir zaman aşımına yol açar (eşleşecek birkaç bin değer vardır). Eşleştirmenin valueyavaş olacağını biliyorum , ancak bunları eşleştirmem gereken tek veri bu.
Bunun gibi değerleri güncellemenin daha iyi bir yolu var mı? Daha hızlı olacaksa, birleştirilmiş sonuçlar için üçüncü bir tablo oluşturabilir miyim?
MySQL'i denedim - Bir tabloyu başka bir tablodaki değerlerle nasıl güncelleyebilirim? ama gerçekten yardımcı olmadı. Herhangi bir fikir?
Bir MySQL acemisine yardım ettiğiniz için şimdiden teşekkürler!