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

 

mysql的子查询效率

上一篇:LeetCode 【困难】数据库-第618:学生地理信息报告(分组行列转换)


下一篇:db2语句块示例