sql inner join 与 left join和right join 执行效率上面有多大差别?

我知道执行结果是不同的,现在问在不同情况下用(left join或right join) 和一直用inner join效率上区别多大。。。。 这里的不同情况下用(left join或right join)是指根据不同情况选择left或right查询使结果没null null的前提下。
最新回答
爱咳嗽就喝急支糖浆

2020-11-10 18:09:59

如果两个表一样大,效率是一样的。
如果两个表的数据量相差很大,那效率上是有区别的。
一般来说,小表去join大表,效率要比大表去join小表高的多。
通常SQL会自动去选择效率好的查询方案。但如果在join之前已经有很多的join,那SQL一般会按join出现的顺序进行查询。
所以写SQL尽量先查询和过滤数据量小的表,再去join大的表。
弃殇

2023-04-01 01:26:59

给个通俗的解释吧.
例表aa
aid atitle
1 a1
2 a2
4 a4
表bb
bid btitle
1 b1
2 b2
3 b3
两个表a,b相连接,要取出id相同的字段
select * from aa inner join bb on aa.aid = bb.bid这是仅取出匹配的数据.
此时的取出的是:
aid atitle bid btitle
1 a1 1 b1
2 a2 2 b2
那么left join 指:
select * from aa left join bb on aa.aid = bb.bid
首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
aid atitle bid btitle
1 a1 1 b1
2 a2 2 b2
4 a4 null null
同样的也有right join:select * from aa right join bb on aa.aid = bb.bid
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
aid atitle bid btitle
1 a1 1 b1
2 a2 2 b2
null null 3 b3
天空天然蓝

2024-02-17 21:58:50

在用大量数据情况下,left join 和right join 效率要比inner join要高,相当于交集和并集的关系,left join和right join 效率差不多的!
如一

2020-11-28 21:34:46

left join 比inner join 效率高
给十年后的我

2024-02-16 04:44:14

这3个的差别不是执行效率上的 而是结果会有不同 再理解下吧
收起 1条折叠回答