mysql JOIN::exec源码简析

3982阅读 0评论2012-11-16 gpfeng_cs
分类:Mysql/postgreSQL

参考:
http://blog.csdn.net/wudongxu/article/details/6683846 
http://blog.chinaunix.net/uid-26896862-id-3218584.html

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的思想,类似于深度优先遍历

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

上一篇:mysql table cache源码分析
下一篇:mysql MEM_ROOT源码分析