在MySQL子查询中,可以直接用EXISTS替换IN吗?还是需要改一下查询语句?

如题所述

第1个回答  2016-06-23
小改一下,比如:
select * from A where id in (select B.id from B)
改成exists
select * from A where exists (select 1 from B where A.id=B.id)追问

请问这个该怎么改啊???这个真不会了。。。以前从没弄过数据库优化!

追答

你这个不是in换成exists就可以了,你先去把lc_lift_association的表结构贴出来,应该是PLATFORM_ID没建索引

追问

追答

我还以为PLATFORM_ID是int类型呢。。ID尽量少用varchar

最直接的办法就是PLATFORM_ID建下索引,如果还超过1、2s那就是别的问题

追问

查询2000条数据,需要70秒。。。。。。我真不好意思说出来。我才来公司已接手就是优化数据库!

追答

你确定你是要做优化数据库的。。。explain懂吗,索引懂吗,exists和in切换都不知道。。。

本回答被提问者采纳
相似回答