首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL update查询where in子查询速度慢

问MySQL update查询where in子查询速度慢
EN

Stack Overflow用户
提问于 2020-10-16 10:15:11
回答 1查看 251关注 0票数 0

我遇到了MySQL查询运行速度极慢的问题。每次更新大约需要2分钟。

以下是查询:

代码语言:javascript
复制
   UPDATE msn
   SET is_disable = 1
   WHERE mid IN
   (
       SELECT mid from link
       WHERE rid = ${param.rid}
   );

所以我的问题是,如果子查询的结果是0或NULL,我想知道UPDATE语句的性能会受到怎样的影响。因为我认为这个过程可能很慢,因为子查询的结果是0或NULL。

在此之前非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 10:23:37

这里的问题是,IN后面的子查询必须执行,无论它是否返回任何记录。我可能会使用exists逻辑来表达您的更新:

代码语言:javascript
复制
UPDATE msn m
SET is_disable = 1
WHERE EXISTS (SELECT 1 FROM link l WHERE m.mid = l.mid AND l.rid = ${param.rid});

然后,将以下索引添加到link表中:

代码语言:javascript
复制
CREATE INDEX idx ON link (mid, rid);

您还可以尝试与此版本的索引进行比较:

代码语言:javascript
复制
CREATE INDEX idx ON link (rid, mid);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64382027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档