我们join查询是有外层表和内层表嘛,然后要匹配数据的话,首先就是2个for循环,拿外层表中的每一条记录,然后去匹配内层表中的所有记录,但是这样的效率是比较低的,匹配次数是nm,所以mysql肯定是不会这么用的。mysql在有索引的情况下,就会找外层表的每一条记录,然后去匹配内层表的索引树,这样的话,匹配次数就变成了n m的索引树的高度,效率就很高了。当没索引时,mysql是使用了一种缓存块的方法,是在第一种方法的基础之上,一次性的缓存多个外层数据,这样的话,内层表的扫描次数也就减少了。