Mysql常见的几种算法
1.嵌套循环连接算法(Nested-Loop Join(NLJ))
2.基于索引的嵌套循环连接算法(Index Nested-Loop Join(INLJ))
3.基于块的嵌套循环连接算法...Extra列中没有出现Using join buffer 则表示该join使用算法是NLJ
上面SQL大致执行流程如下
从t2表中读取一行记录(如果t2表有查询过滤条件,会先执行完过滤条件,再从过滤后结果中取一行记录...基于索引的嵌套循环连接算法(Index Nested-Loop Join (INLJ)
索引嵌套循环连接算法是基于嵌套循环算法的改进版,其优化的思路,主要是为了减少了内层循环匹配次数,就是通过外层数据循环与内存索引数据进行匹配...t2中获取到的结果进行合并,将结果放入结果集
循环上三个步骤,直到无法满足条件,将结果集返回给客户端
特点:基于嵌套循环连接算法进行优化,虽然还是双层循环进行匹配数据,但是内层循环(被驱动表)是使用索引树的高度决定循环次数的...中(默认内存大小为256k,如果数据量多,会进行分段存放,然后进行比较)
把表t1的每一行数据,跟join_buffer中的数据批量进行对比
循环上两个步骤,直到无法满足条件,将结果集返回给客户端
这个例子里表