Karena Anda menggunakan LIKE '%abc%'
, pernyataan pembaruan akan memerlukan pemindaian tabel lengkap. Dalam hal ini, menggabungkan dua pernyataan akan meningkatkan kinerja secara keseluruhan. Namun, menurut saran Anda, setiap baris diperbarui dan sebagian besar diperbarui tanpa diubah (nilai kolom1 diganti dengan nilai kolom1).
Anda ingin memastikan bahwa Anda menyimpan WHERE
klausa sehingga hanya baris yang benar-benar perlu diubah yang diubah. Menulis ke disk yang tidak perlu ini lebih lambat daripada memeriksa apakah baris cocok dengan kriteria.
Lakukan ini:
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%';