Join
单机join基本算法
1.Hash Join:
对数据没有要求,对SQL有要求,必须要有等值连接条件,例如t1.colA = t2.colB。OLAP一般都会实现Hash join,计算速度快,且用户的很多join场景都是带有等值连接条件的。
2.Merge Sort Join:
左表和右表的数据都是有序的,排序的列,是Join Key的子集,也就是Join Key部分列有序就可以。
3.Nestloop Join:
不要求数据有序,不要求SQL有等值连接条件。一般在数据无序且SQL中没有等值连接条件,此时无法使用上述的两种方法,才不得已使用此方法。效率最低,但适应范围最广,MySQL的最爱,在8.0.18之后才支持Hash Join,之前都是Nestloop Join,并且为了加速,还建了索引。
Flink的Interval join,用的是Nestloop Join方法,
分布式Join基本算法
与单机Join的区别是,需要先对数据进行重分布,重分布要在保证计算结果正确的前提下,优先提升计算速度,尽