join,那么mysql优化器会以小表作为驱动表,大表为被驱动表
一般使用了join语句中,如果执行计划中的 Extra列中没有出现Using join buffer 则表示该join使用算法是NLJ...t2中获取到的结果进行合并,将结果放入结果集
循环上3个步骤,直到无法满足条件,将结果集返回给客户端
整个过程会读取t2表所有数据(100行数据),然后遍历每行数据字段a的值,根据t2表中a的值扫描t1...lists.add(结果集);
}
}
}
这里可以将外层循环看作为驱动表,内层循环看作为被驱动表,每次进行join时,会先从驱动表中拿取一条完整的数据和被驱动表进行条件匹配,如果匹配成功...t2中获取到的结果进行合并,将结果放入结果集
循环上三个步骤,直到无法满足条件,将结果集返回给客户端
特点:基于嵌套循环连接算法进行优化,虽然还是双层循环进行匹配数据,但是内层循环(被驱动表)是使用索引树的高度决定循环次数的...中(默认内存大小为256k,如果数据量多,会进行分段存放,然后进行比较)
把表t1的每一行数据,跟join_buffer中的数据批量进行对比
循环上两个步骤,直到无法满足条件,将结果集返回给客户端
这个例子里表