case
câu lệnh không thêm thời gian, vì nó được tìm kiếm.
Giải pháp? Lưu trữ các cặp trong một bảng tạm thời. . . với một chỉ mục. Vì vậy:
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'),
. . . ;
Sau đó sử dụng update
với join
:
update test_table tt join
code_paris cp
on tt.code = cp.old_code
set tt.code = cp.new_code;
Điều này giúp bạn tiết kiệm thời gian vì mã phù hợp được tìm thấy bằng cách sử dụng chỉ mục, thay vì sau đó tìm kiếm từng cái một thông qua một case
bản tường trình. Ngoài ra, không có bản cập nhật nào được cố gắng trên các hàng không khớp. 170.000 hàng không có kết quả phù hợp có lẽ là phần chậm nhất của truy vấn, vì chúng cần phải xem qua toàn bộ danh sách case
giá trị.