0.写在前面
based on CMU 15-445/645 2020fall, Lecture #11.
Join是数据库中非常常见的操作。
对于Join操作,大致可以分为三种:Loop、Sort、Hash;下面是算法以及其时间的介绍。
1:Join算法
1.1Simple loop join
最最最暴力的算法,二重循环。
1.2 Block loop join
由于可以用B - 2 个buffer来scan 关系R所以时间复杂度就可以减少非常多。
也可以利用Index来进行优化:
对于外层循环中的每一个元素。我们利用索引在内层关系中进行查找。假设索引所带来的消耗为C
所以总的时间就变成了𝑀+(𝑚×𝐶)
1.3 Sort-Merge Join
Sort Merge Join是利用排序后的table做join,其好处是排序后的table,相同的record都在一起,所以可以直接顺序读。思想类似于归并排序。