Bir CLI komut dosyası kullanarak bir LARGE MyISAM tablosunu (25 milyon kayıt) güncelleştirmeye çalışıyorum. Tablo kilitli/başka bir şey tarafından kullanılmıyor.MySQL güncelleştirmesi CASE WHEN/THEN/ELSE
Her kayıt için tek UPDATE sorgusu yapmak yerine, CASE özelliğini kullanabileceğimi düşündüm.
id
alanı PRIMARY'tır. Aşağıdaki sorgunun milisaniye alması gerektiğinden şüpheleniyorum.
UPDATE `table` SET `uid` = CASE
WHEN id = 1 THEN 2952
WHEN id = 2 THEN 4925
WHEN id = 3 THEN 1592
END
Sorgu, CPU'yu bekletir ve sonsuza dek bitmez.
Daha sonra, sürprizime göre, sorgunun belirttiğim satırlara bir NULL yerleştirerek, 25 milyon satırın tümünü güncelleştirdiğini öğrendim.
Bunun amacı nedir? Bu sorguyu her çalıştırdığımda 25 milyon satırı güncellemeden belirli satırlarda MASS güncellemesi yapabilir miyim? Yoksa bireysel güncellemeler yapmalı mıyım?
'case' içinde' else' ifadesini belirtin 'null' sıfırdır –