美文网首页
join原理

join原理

作者: pzzzzzzzzz | 来源:发表于2020-09-18 10:50 被阅读0次

join 主要有Nested Loop、Hash Join、Merge Join这三种方式,

Nested Loop 翻译过来就是嵌套循环的意思,那什么又是嵌套循环呢?嵌套大家应该都能理解,就是一层套一层;那循环呢,你可以理解成是 for 循环。

Nested Loop 里面又有三种细分的连接方式,分别是Simple Nested-Loop Join、Index Nested-Loop Join、Block Nested-Loop Join,接下来我们就分别去看一下这三种细分的连接方式。

在正式开始之前,先介绍两个概念,驱动表(也叫外表)和被驱动表(也叫非驱动表,还可以叫匹配表,亦可叫内表),简单来说,驱动表就是主表,left join 中的左表就是驱动表,right join 中的右表是驱动表。一个是驱动表,那另一个就只能是非驱动表了,在 join 的过程中,其实就是从驱动表里面依次(注意理解这里面的依次)取出每一个值,然后去非驱动表里面进行匹配,那具体是怎么匹配的呢?这就是我们接下来讲的这三种连接方式。

Simple Nested-Loop Join

 left join 会从驱动表 table A 中依次取出每一个值,然后去非驱动表 table B 中从上往下依次匹配,然后把匹配到的值进行返回,最后把所有返回值进行合并,这样我们就查找到了table A left join table B的结果。是不是和你的认知是一样的呢?利用这种方法,如果 table A 有10行,table B 有10行,总共需要执行10 x 10 = 100次查询。

Index Nested-Loop Join

Index Nested-Loop Join 这种方法中,我们看到了 Index,大家应该都知道这个就是索引的意思,这个 Index 是要求非驱动表上要有索引,有了索引以后可以减少匹配次数,匹配次数减少了就可以提高查询的效率了。

Block Nested-Loop Join

理想情况下,用索引匹配是最高效的一种方式,但是在现实工作中,并不是所有的列都是索引列,这个时候就需要用到 Block Nested-Loop Join 方法了,这种方法与第一种方法比较类似,唯一的区别就是会把驱动表中 left join 涉及到的所有列(不止是用来on的列,还有select部分的列)先取出来放到一个缓存区域,然后再去和非驱动表进行匹配,这种方法和第一种方法相比所需要的匹配次数是一样的,差别就在于驱动表的列数不同,也就是数据量的多少不同。所以虽然匹配次数没有减少,但是总体的查询性能还是有提升的。

索引如何提升查询效率

相关文章

  • join

    MySQL的JOIN(二):JOIN原理MySQL JOIN原理

  • MYSQL优化杂谈四,基于JOIN的优化

    Join的实现原理 Nested Loop Join Join的优化 1.尽可能减少Join语句中的Nested ...

  • join原理

    join 主要有Nested Loop、Hash Join、Merge Join这三种方式, Nested Loo...

  • join原理

    简单而言,join的原理就是在synchronized代码块中等待当前线程结束,这跟保护性暂停(一个线程等待另外一...

  • Mysql-join原理

    join原理 by shihang.mai mysql用了Nested-Loop Join(嵌套循环链接) 驱动表...

  • Hive笔记5-join原理和机制

    hive中join原理与机制 笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成jo...

  • mysql left join优化

    原理 MySQL内部采用了一种叫做 nested loop join的算法。Nested Loop Join 实际...

  • 解决Spark数据倾斜(二) 使用Map侧Join代替Reduc

    原理 通过Spark的Broadcast机制,将Reduce侧Join转化为Map侧Join,避免Shuffle从...

  • Java并发工具类

    工具类 等待join线程完成 实现原理就是不停检查join线程是否存活,如果join线程存活则让当前线程永远等待。...

  • Java 多线程 入门1

    一、线程原理 1.调用join()和sleep()方法,sleep()时间结束或被打断,join()中断,IO完成...

网友评论

      本文标题:join原理

      本文链接:https://www.haomeiwen.com/subject/jpndyktx.html