gpt4 book ai didi

php - 在一个查询中更新多行性能非常慢

转载 作者:行者123 更新时间:2023-11-29 03:44:50 26 4
gpt4 key购买 nike

我正在寻找使用单个查询一次更新多行的最佳方法。目前我有:

UPDATE `profiles` SET `name` = CASE `id` WHEN 1 THEN 'John' WHEN 2 THEN 'Jane' END, `gender` = CASE `id` WHEN 1 THEN 'Male' WHEN 2 THEN 'Female' END WHERE `id`=1 OR `id`=2

但这需要大约 4 分钟才能完成(我的实际查询是在一个 2000 万行的数据库中的 10 个字段上),而不是大约需要 1 秒的单个更新查询。

我正在尝试找出原因,到底发生了什么?我认为通过在 WHERE 子句中指定 id 可以加快速度。

最佳答案

请问您可以发布配置文件表的 DDL 吗?这将有助于查看您设置的索引类型(例如 - 我们可以假设 id 列是这里的主键吗?)。如果您使用的是 MySQL,则只需运行“SHOW CREATE TABLE profiles”即可生成 DDL。

可能有帮助的几点:

1) 尝试在 WHERE 子句中使用 BETWEEN 而不是 OR。例如 更新配置文件

SET `name` = 

CASE `id` WHEN 1 THEN 'John'

WHEN 2 THEN 'Jane' END,

`gender` = CASE `id`

WHEN 1 THEN 'Male' WHEN 2 THEN 'Female' END

WHERE `id` between 1 and 2;

2) 尝试将查询拆分为单独的查询以避免使用 CASE 语句,例如

update `profiles`

set `name` = 'John',

`gender` = 'Male'

where `id` = 1;

update `profiles`

set `name` = 'Jane',

`gender` = 'Female'

where `id` = 2;

我不知道这是否可行,因为我不确定您在什么情况下使用查询!希望对您有所帮助。

关于php - 在一个查询中更新多行性能非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7565497/

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