left join 和 inner join

本文探讨了MySQL中left join与inner join的区别及性能对比。通过两个具体示例说明了不同条件下查询结果的变化,并强调了尽可能使用inner join来提高查询效率。

left join 和 inner join

首先 MySQL 中 inner join 的效率确实要高于 left join。所以没必要使用 left join 转弯成 inner join 的效果。这样不但效率降低,可读性也会降低。

 

Number1

select 

from t1 left join t2 

where t2.field = value 

 

Number2

select 

from t1 left join t2  and t2.field = value

 

这两种写法涉及到一个条件位置不同查询结果就不一致的问题,Number1的意思其实和使用 inner join 效果是一致的,因为他对连接的结果做了过滤;

Number2 则是先对 t2 做过滤,然后再连接,所以他的结果集要大于 Number1,换句话说Number2的条件是强加在 t2 上的,而不是整个结果集。

另外,如果把查询条件改为 t2.field  is  null ; 前者与后者的结果是一致的,都是表示存在 t1 不存在 t2,所以这个比较特殊。

总之尽量不要使用 left join,除非业务需要,否则尽量使用 inner join.

转载于:https://my.oschina.net/heweipo/blog/1083430

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值