为什么⼦查询⽐连接查询(LEFTJOIN)效率低
MySQL从4.1版本开始⽀持⼦查询,使⽤⼦查询进⾏SELECT语句嵌套查询,可以⼀次完成很多逻辑上需要多个步骤才能完成的SQL操作。⼦查询虽然很灵活,但是执⾏效率并不⾼。
那么问题来了,什么是⼦查询?为什么它的效率不⾼?
⼦查询:把内层查询结果当作外层查询的⽐较条件
⼦查询:
⽰例:
select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
执⾏⼦查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,⼦查询的速度会受到⼀定的影响,这⾥多了⼀个创建和销毁临时表的过程。
sql left join 多表连接
优化⽅式:
可以使⽤连接查询(JOIN)代替⼦查询,连接查询不需要建⽴临时表,因此其速度⽐⼦查询快。