[英]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.