Ponieważ używasz LIKE '%abc%'
, instrukcja aktualizacji będzie wymagać pełnego skanowania tabeli. W takim przypadku połączenie tych dwóch stwierdzeń poprawi ogólną wydajność. Jednak zgodnie z twoją sugestią każdy wiersz jest aktualizowany, a większość z nich jest aktualizowana bez zmian (wartość kolumny 1 jest zastępowana wartością kolumny 1).
Chcesz mieć pewność, że zachowałeś WHERE
klauzula, aby zmienić tylko te wiersze, które naprawdę wymagają zmiany. Ten niepotrzebny zapis na dysku jest wolniejszy niż sprawdzanie, czy wiersz spełnia kryteria.
Zrób to:
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%';