sql >> Database >  >> RDS >> Mysql

mysql case in update statement met REPLACE

Aangezien je LIKE '%abc%' . gebruikt , vereist de update-instructie een volledige tabelscan. In dat geval zal het combineren van de twee uitspraken de algehele prestaties verbeteren. In uw suggestie wordt echter elke rij bijgewerkt en de meeste worden bijgewerkt zonder te worden gewijzigd (kolom1-waarde wordt vervangen door kolom1-waarde).

U wilt er zeker van zijn dat u de WHERE . bewaart clausule zodat alleen rijen die echt moeten worden gewijzigd, worden gewijzigd. Dit onnodig schrijven naar schijf is langzamer dan controleren of de rij voldoet aan de criteria.

Doe dit:

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



  1. 2 manieren om rijen met alfanumerieke tekens terug te geven in MySQL

  2. mySQL CAST en ASC / DESC

  3. Hoe de laatste rij te lezen met SQL Server

  4. WordPress installeren met WP-CLI