Тъй като използвате LIKE '%abc%'
, изявлението за актуализиране ще изисква пълно сканиране на таблицата. В този случай комбинирането на двете твърдения ще подобри цялостното представяне. Във вашето предложение обаче всеки отделен ред се актуализира и повечето от тях се актуализират, без да се променят (стойността на колона 1 се заменя със стойност на колона 1).
Искате да сте сигурни, че запазвате WHERE
клауза, така че да се променят само редове, които наистина се нуждаят от промяна. Това ненужно записване на диск е по-бавно от проверката дали редът отговаря на критериите.
Направете това:
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%';