前言
pro3的东西就比较偏底层了,毕竟join
和query
是我们平时用的比较多的sql语句,平时只会写sql,但不知道他在底层到底是怎么实现的,所以pro3就让我们在框架的基础上去实现这些方法。
Join
join方法就是把左边的表和右边的表满足条件的行join在一张新表中(条件可以是某一列取值相同)
Simple Nested Loop Join (SNLJ)
这是join实现的最基础的方法,也是效率最低的方法,实际的数据库中不太会使用这种方法,但在这个项目中,老师给我们简单的实现了这个方法以供参考。
SNLJ
就是最简单的暴力算法,假设我左边的表有M行,右边的表是N行,SNLJ
就是M*N的复杂度,用左边表的M行的每一行都去比较右边的N行,然后取得结果。
SNLJ
是最容易理解也是最简单,速度最慢的方法。
我们看后面的算法其实也能知道,M*N的比较次数时肯定不能少的,那么为什么SNLJ
会慢很多呢?
主要原因在SNLJ
每次取行的时候只取一行,那么对于M