参考:

MySQL join实现的是nest-loop

通过三个函数完成:do_select, sub_select, evaluate_join_record

sub_select是一个递归函数,也就是其实现了nest-loop算法

join(JOIN)包含了一个join_tab(JOIN_TAB)链,用来保存所有需要连接的表以及其它信息

每个join_tab中有一个next_select的函数指针成员,对于join中的最后一个join_tab, next_select=end_select,而其它的join_tabe,其next_select=sub_select

这正是nest loop的思想,类似于深度优先遍历

根据参考博客和源码做的总结,小记一下!

01-11 15:33