数据库连接查询的问题

图片说明
如图,students 和workmates 两个表的主键均为id,为什么左连接查询的时候workmates的rows=3而不是等于1呢?为什么这时会使用join buffer?

当我们的join是ALL,index,rang或者Index_merge的时候使用的buffer。

实际上这种join被称为FULL JOIN。

实际上参与join的每一个表都需要一个join buffer。

所以在join出现的时候,至少是2个。

join buffer的这只在mysql5.1.23版本之前最大为4G,但是从5.1.23版本开始,再出了windows之外的64为平台上可以超出4GB的限制。

谢谢,我知道了,把b.level删掉就变成eq-ref了