gpt4 book ai didi

mysql - 使用 case 语句优化查询

转载 作者:可可西里 更新时间:2023-11-01 07:17:42 26 4
gpt4 key购买 nike

我有一列代码。现在每个代码都已更改为其他代码。我正在尝试更新它。所以我在 mysql 中使用了 case 语句。但问题是,我有大约 250,000 行和 80,000 个唯一代码需要替换。并且 case 语句执行大约需要 10 分钟。任何更好的方法来做到这一点。

我的查询是这样的:

UPDATE test_table
SET code = CASE
WHEN code = "akdsfj" THEN "kadjsf"
WHEN code = "asdf" THEN "ndgs"
WHEN code = "hfgsd" THEN "gfdsd"
... (I am doing in batches of 1000 case statements at a time)
ELSE code

最佳答案

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'),
. . . ;

然后使用 updatejoin:

update test_table tt join
code_paris cp
on tt.code = cp.old_code
set tt.code = cp.new_code;

这可以节省您的时间,因为匹配代码是使用索引找到的,而不是通过 case 语句逐一搜索。此外,不会尝试对没有匹配项的行进行更新。没有匹配项的 170,000 行可能是查询中最慢的部分,因为它们需要遍历整个 case 值列表。

关于mysql - 使用 case 语句优化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39501092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com