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