对于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,class c where s.sid=c.sid and cid=2
//使用连接查询,则不会有临时表的生成。