case
pernyataan memang menambah waktu, karena dicari.
Solusinya? Simpan pasangan dalam tabel sementara. . . dengan indeks. Jadi:
create temporary table code_pairs (
old_code varchar(255) not null primary key,
new_code varchar(255)
);
insert into code_pairs(old_code, new_code)
values ('akdsfj', 'kadjsf'),
('asdf', 'ndgs'),
. . . ;
Kemudian gunakan update
dengan join
:
update test_table tt join
code_paris cp
on tt.code = cp.old_code
set tt.code = cp.new_code;
Ini menghemat waktu Anda karena kode yang cocok ditemukan menggunakan indeks, daripada mencari satu per satu melalui case
penyataan. Selain itu, tidak ada pembaruan yang dicoba pada baris yang tidak cocok. 170.000 baris tanpa kecocokan mungkin merupakan bagian paling lambat dari kueri, karena harus melalui seluruh daftar case
nilai.