inner join和left join的区别

本文分享了一次技术面试的经历,面试官询问了INNER JOIN与LEFT JOIN的区别,作者从逻辑实现的角度进行了回答,并强调了这两种连接方式在性能上不可直接比较的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做了这么多年的IT,一直没有机会接触互联网应用、高并发应用,不得不说这是一种遗憾…为了弥补这种遗憾,我开始关注做互联网应用的公司,寻找新的机会。

周二参加了一家公司的技术面试,今天得到回复是不满足岗位需求。但是我没有遗憾,为什么呢?

这是一家投资公司,叫乐博国际投资发展有限公司。说实在的,人事打电话给我的时候,如果不说他们公司主要从事二手车交易平台的研发,我都懒得去面试。也就是说,我是看好二手车交易这个市场前景的。

面试官据说是项目经理,长发飘飘的高个子,面试过程没什么值得说的,没有问道什么出彩的内容。但是有一个问题,可能是我被拒绝的直接原因,关于inner join和left join的区别。

当他问到这个问题时候,我笑了,我说这样的问题还是适合问应届毕业生。他还是坚持让我作答。无奈,说关联方式的区别、执行结果的区别…突然被打断,面试官说:你已经工作四五年了,当我问到基础问题的时候,希望你能提升一个层次回答…我心想,这面试官要求高水平啊。我开始叙述oracle如何实现关联查询...又被打断,面试说:就说说这两者性能上的差异…尼玛,听到这句我傻眼了!他继续说自己的工作中经历,什么inner join查了20多秒,left join查了3秒…我听不下去了,于是纠正他,这是两个不通逻辑实现,怎么能放在一起比较性能呢?说完这句话,我就知道面试结果了。

联合查询的效率,和关联条件、过滤条件有很大关系,具体还要看执行计划做出尽可能的优化,但是,唯独跟join的方式没有关系。一般情况,在使用inner join具体场景中,不能使用left join替换,同样的,使用left join的地方也不能用inner join替换。即便在某些特殊的情况下,inner join和left join返回结果相同,这也仅仅是一种巧合,谁能保证两张表的数据是一直不变的?一旦其中一张表的数据发生CURD,就很容易打破这中巧合。

说到底,inner join和left join是两个完全不同的东西,放在一起比较执行效率,实在没有意义!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值