Estoy tratando de actualizar una tabla GRANDE MyISAM (25 millones de registros) utilizando un script CLI. La tabla no está siendo bloqueada/utilizada por otra cosa.MySQL update CASE WHEN/THEN/ELSE
Me figuré que en lugar de hacer consultas de ACTUALIZACIÓN únicas para cada registro, también podría utilizar la función CASE.
El campo id
es PRIMARIO. Sospecho que la siguiente consulta debería tomar milisegundos.
UPDATE `table` SET `uid` = CASE
WHEN id = 1 THEN 2952
WHEN id = 2 THEN 4925
WHEN id = 3 THEN 1592
END
De acuerdo, la consulta acapara la CPU y no termina para siempre.
Entonces, para mi sorpresa, descubrí que la consulta está actualizando todas las 25 millones de filas, colocando un NULL en las filas que no especifiqué.
¿Cuál es el propósito de eso? ¿Puedo hacer una actualización MASS en filas específicas sin actualizar 25 millones de filas cada vez que ejecuto esta consulta? ¿O tengo que hacer actualizaciones individuales y luego comprometerme?
Cuando usted no especifique 'else' en' case' statement default es 'null' –