MySql in子句 效率低下优化(亲测有效,从200秒变1秒)

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql in子句 效率低下优化(亲测有效,从200秒变1秒)相关的知识,希望对你有一定的参考价值。

mysql in子句 效率低下优化

背景:

 更新一张表中的某些记录值,更新条件来自另一张含有200多万记录的表,效率极其低下,耗时高达几分钟。

update clear_res set candelete=0 where resid in
(
 select distinct resourceid from att_attentionresult where important=0
);

耗时 365s

 

优化后

 update clear_res set candelete=0 where resid in
(
  select resourceid from (
    select distinct resourceid from att_attentionresult where important=0
  ) as tmp
);

耗时 1.41s

 

总结:对于where xxx in 子句效率极其低下问题,经过in的子句外包装一层select xxx from( ... )as tmp 后,极大优化效率。

 

https://www.cnblogs.com/hdwang/p/4749152.html

以上是关于MySql in子句 效率低下优化(亲测有效,从200秒变1秒)的主要内容,如果未能解决你的问题,请参考以下文章

使用“NOT IN”优化 MySQL 查询

优化分析Mysql表读写索引等操作的sql语句效率优化问题

Oracle Sql效率优化

提高SQL查询效率(SQL优化)(转载)

如何优化SQL语句

MySQL优化之COUNT(*)效率(部分转载与个人亲测)