gpt4 book ai didi

mysql "in"子句相当慢(似乎挂起)

转载 作者:行者123 更新时间:2023-11-29 12:36:43 25 4
gpt4 key购买 nike

我正在使用 mysql,像这样的简单查询似乎永远卡在 cpu 100% 的情况下。

  select login_name, server, recharge 
from role_info
where login_name in (select login_name
from role_info
group by login_name
having count(login_name) > 1)

表role_info很小,只有33535行。

下面是解释的输出:

|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |引用|行 |额外|

| 1 |小学 |角色信息 |全部 |空|空|空|空 | 33535 | 33535使用位置 |

| 2 |依赖子查询 |角色信息 |索引 |空 |一个 | 302 | 302空 | 1 |使用索引|

显示进程列表报告查询不断发送数据。

查询| 1135 | 1135发送数据 |选择登录名、服务器、充值 from role_info where login_name in (select login_name from ...

我可以切换为 join 而不是“in”,而且效果很好。但仍然好奇为什么这个简单的查询会表现得如此异常。

最佳答案

我想知道有多少人一次又一次地被这个错误绊倒。持久MySQL bug#32665 ,其中 MySQL 6 是目标版本。这意味着MySQL会将不相关的子查询转换为相关的(每行外部结果集执行)。以防万一,在 this blog这篇文章提供了一些想法,当您无法将查询重写为使用 JOIN 时,如何解决该限制。

关于mysql "in"子句相当慢(似乎挂起),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26672945/

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