Mysql
 sql >> Base de données >  >> RDS >> Mysql

cas mysql dans l'instruction de mise à jour avec REPLACE

Puisque vous utilisez LIKE '%abc%' , l'instruction de mise à jour nécessitera une analyse complète de la table. Dans ce cas, la combinaison des deux instructions améliorera les performances globales. Cependant, dans votre suggestion, chaque ligne est mise à jour et la plupart d'entre elles sont mises à jour sans être modifiées (la valeur de la colonne 1 est remplacée par la valeur de la colonne 1).

Vous voulez vous assurer que vous conservez le WHERE clause afin que seules les lignes qui ont vraiment besoin d'être modifiées soient modifiées. Cette écriture inutile sur le disque est plus lente que de vérifier si la ligne correspond aux critères.

Faites ceci :

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%';