子查询虽然很灵活,但是执行效率并不高。
那么问题来了,什么是子查询?为什么它的效率不高?
子查询:把内层查询结果当作外层查询的比较条件
示例:
select goods_id,goods_name
from goods
where goods_id = (select max(goods_id)
from goods);
执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。
优化方式:
可以使用连接查询(JOIN)代替子查询,连接查询不需要建立临时表,因此其速度比子查询快。
子查询和关联查询的效率问题
MSDN对子查询的定义是这样的:
可以将一个查询的结果用作另一个查询的输入。