Поскольку вы используете LIKE '%abc%'
, оператор обновления потребует полного сканирования таблицы.В этом случае объединение двух операторов улучшит общую производительность.Однако, по вашему предложению, каждая отдельная строка обновляется, и большинство из них обновляются без изменения (значение column1 заменяется значением column1).
Вы хотите убедиться, что вы сохраняете предложение 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%';