mysql的子查询效率

对于mysql来说,我们并不推荐使用子查询  

由于在mysql中,执行子查询时,需要创建临时表,查询完毕之后再删除这些临时表,

所以子查询的速度会受到一些影响,这里多了一个创建于销毁临时表的过程,那怎么解决这个问题呢? 

这里我们推荐使用join来代替子查询,因为join不需要建立临时表来查询,因此尽量使用链接来代替子查询,不过需要注意的是,使用连接查询,则两个链接表之间必须有相关联的字段

一个表的主键在另一个表中为外键等,才可以使用。

例如:

select sname from student where sid in (select sid from class where cid=2) 
//这时mysql会建立一个cid=2的临时表,从这个表中查找cid=2的sid 
//接下来我们使用join连接查询
select sname from student s inner join class c on s.sid=c.sid and cid =2 
//使用连接查询,则不会有临时表的生成。

 

posted @ 2021-07-02 10:58  小王-小刘  阅读(693)  评论(0)    收藏  举报