case
ステートメントは検索されるため、時間が追加されます。
ソリューション?ペアを一時テーブルに保存します。 。 。インデックス付き。だから:
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'),
. . . ;
次に、update
を使用します join
で :
update test_table tt join
code_paris cp
on tt.code = cp.old_code
set tt.code = cp.new_code;
これにより、case
を1つずつ検索するのではなく、インデックスを使用して一致するコードが見つかるため、時間を節約できます。 声明。さらに、一致する行がない行の更新は試行されません。一致しない170,000行は、case
のリスト全体を調べる必要があるため、おそらくクエリの中で最も遅い部分です。 値。