LIKE '%abc%'
を使用しているため 、updateステートメントには全表スキャンが必要です。その場合、2つのステートメントを組み合わせると、全体的なパフォーマンスが向上します。ただし、提案では、すべての行が更新され、ほとんどの行は変更されずに更新されます(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%';