Sto tentando di aggiornare una tabella MyISAM LARGE (25 milioni di record) utilizzando uno script CLI. Il tavolo non viene bloccato/utilizzato da nient'altro.Aggiornamento MySQL CASE WHEN/THEN/ELSE
Ho pensato invece di eseguire singole query UPDATE per ogni record, potrei anche utilizzare la funzione CASE.
Il campo id
è PRIMARIO. Sospetto che la seguente query debba richiedere millisecondi.
UPDATE `table` SET `uid` = CASE
WHEN id = 1 THEN 2952
WHEN id = 2 THEN 4925
WHEN id = 3 THEN 1592
END
Ecco, la query occupa la CPU e non termina per sempre.
Quindi, con mia sorpresa, ho scoperto che la query sta aggiornando tutte le 25 milioni di righe, posizionando un NULL su righe che non ho specificato.
Qual è lo scopo? Posso eseguire un aggiornamento MASS su righe specifiche senza aggiornare 25 milioni di righe ogni volta che eseguo questa query? O devo fare singoli aggiornamenti e poi commettere?
Quando non specificare 'else' in' case' istruzione default è 'null' –