2016 - 2024

感恩一路有你

left join效率为什么低 left join效率为什么低?

浏览量:1698 时间:2021-03-11 21:10:12 作者:admin

left join效率为什么低?

为什么子查询比连接查询(LEFT JOIN)效率低

MySQL从4.1版本开始支持子查询,使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。子查询虽然很灵活,但是执行效率并不高。

那么问题来了,什么是子查询?为什么它的效率不高?

子查询:把内层查询结果当作外层查询的比较条件


示例:

select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods)

执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。


优化方式:

可以使用连接查询(JOIN)代替子查询,连接查询不需要建立临时表,因此其速度比子查询快。

leftjoin为什么不能超过三张表?

任何一个数据库都没有规定不能超过多少表,left join表越多需要更加注意sql的匹配顺序,只有最先匹配出最少的数据才能保证sql的执行效率

SQL中leftjoin连接多张表?

1、两个表连接

select a.*,b.* from a left join b on a.id =b.id;

2、三个以上

select a.*,b.* from a left join b on a.id=b.id left join c on a.id=b.id where …;

3、可以有多种变换,连接条件,显示字段跟具体结合具体场景灵活运用。

扩展资料

论SQL语句中的多表关系

1、一对多 - 用于去重 - left join 要连接的表 on 唯一字段(标识) = 多字段

2、一对一 - 用于查询 - left join 要连接的表 on 唯一字段 = 唯一字段

3、多对一 - 用于分组 - left join 要连接的表 on 多字段 = 唯一字段

left join效率为什么低 如何优化leftjoin速度 leftjoin和where效率

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。