sql >> Databáze >  >> RDS >> Mysql

případ mysql v příkazu aktualizace s REPLACE

Protože používáte LIKE '%abc%' , bude prohlášení o aktualizaci vyžadovat úplné prohledání tabulky. V takovém případě kombinace těchto dvou příkazů zlepší celkový výkon. Podle vašeho návrhu je však aktualizován každý jednotlivý řádek a většina z nich je aktualizována beze změny (hodnota sloupce1 je nahrazena hodnotou sloupce1).

Chcete se ujistit, že ponecháte WHERE klauzule tak, aby byly změněny pouze řádky, které skutečně potřebují změnu. Tento zbytečný zápis na disk je pomalejší než kontrola, zda řádek odpovídá kritériím.

Udělejte toto:

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. MySQL GROUP BY věkové rozmezí včetně nulových rozsahů

  2. MySQL Connect přes proxy v Javě

  3. Používáte správné nástroje pro sledování výkonu databáze?

  4. Nejlepší DBaaS řešení pro PostgreSQL