繁体   English   中英

MySQL查询执行非常慢

[英]MySQL query execution very slow

我有这个查询:

UPDATE invitations SET added=added+1 WHERE chat_id NOT IN (SELECT * FROM (SELECT LEFT(name,14) AS chat_id FROM rules WHERE name LIKE '-%-credit' AND value< 1522744396) AS iner)

每次执行它都需要花费很多时间,而且它从不执行我想要的操作。 例如,我现在就运行它,到目前为止已经花费了1600秒,但什么都没有发生。 在显示过程列表中,我看到它处于“正在发送数据”状态。 这个查询怎么了?

该表规则最多具有10万行,内部查询返回的结果类似于2K行。 内部查询的结果为一列,类似于:chat_id -1001167043635 -1001167043643 ...

当我单独运行内部查询时,大约需要0.007秒。

邀请表有50万行,例如:user_id | chat_id | 添加55545323 | -1001167043635 | 23

如果您能告诉我我做错了什么并告诉我如何解决,将不胜感激。

为什么要运行“选择*”? 内部Select是否无法满足您的要求?

您在chat_id上设置索引了吗?

您可能会认为NOT IN中的子查询仅对整个查询执行一次。 事实是,对于“外部查询”中的每一行,“内部查询”将执行一次。 我们曾经面对这个问题。 用mysql EXPLAIN查询检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM