mysql查询执行非常慢

doinxwow  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(273)

我有个问题:

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秒,但是什么都没有发生。在ShowProcessList中,我看到它处于“发送数据”状态。这个查询有什么问题?
表规则最多有10万行,内部查询返回2万行。内部查询的结果是一列,类似于:chat\u id-1001167043635-1001167043643。。。
当我单独运行内部查询时,大约需要0.007秒。
邀请表有500k行,如下所示:user|id | chat|id | added 55545323 |-1001167043635 | 23
如果您能告诉我我做错了什么,并告诉我如何改正,我将不胜感激。

0kjbasz6

0kjbasz61#

为什么要运行“select*”?内部选择是否不满足您的请求?
你有没有设置聊天室id的索引?

rvpgvaaj

rvpgvaaj2#

您可能认为not in中的子查询对整个查询只执行一次。问题是,对于外部查询中的每一行,内部查询将执行一次。我们曾经面对过这个问题。用mysql解释查询检查。

相关问题