sql >> Base de Datos >  >> RDS >> Mysql

caso mysql en declaración de actualización con REEMPLAZAR

Dado que está utilizando LIKE '%abc%' , la declaración de actualización requerirá una exploración completa de la tabla. En ese caso, la combinación de las dos afirmaciones mejorará el rendimiento general. Sin embargo, en su sugerencia, cada fila se actualiza y la mayoría de ellas se actualizan sin cambios (el valor de la columna 1 se reemplaza con el valor de la columna 1).

Quiere asegurarse de mantener el WHERE cláusula para que solo se cambien las filas que realmente necesitan cambios. Esta escritura innecesaria en el disco es más lenta que comprobar si la fila coincide con los criterios.

Haz esto:

UPDATE table1
SET column1 = 
CASE
WHEN column1 LIKE '%abc%' THEN REPLACE(column1, 'abc', 'abc1')
WHEN column1 LIKE '%def%' THEN REPLACE(column1, 'def', 'def1')
END
WHERE column1 LIKE '%abc%' OR column1 LIKE '%def%';