嵌套循环关联

嵌套循环关联也叫,Nested Loop Join,简称NLJ。其执行过程大致如下所示:
l6inld40.png

  1. 首先根据条件tbl1.col3 = 1的条件,对左侧外层的表tbl进行筛选,得到两条数据
  2. 然后将得到的两条数据带到内层的表tbl2中,根据条件tbl1.col3 = tbl2.col3进行筛选
  3. 最后组合数据,输出结果

需要注意的是:

  1. 左侧外侧的表叫做驱动表,所以左侧的驱动表的数据越少越好,因为左侧表的数据很多的话,内层的循环数据也很多,查询优化器会优先选择查询结果少的表作为驱动表,确定驱动表的过程是mysql自动为我们进行分析得到的
  2. explain语句,默认第一行出现的表就是驱动表,由查询优化器自动选择
  3. explain语句结果的type字段,All是全表扫描,eq_ref是按主键或者唯一索引联合查询,ref是非主键或唯一索引的等值检索
最后修改:2023 年 12 月 30 日
如果觉得我的文章对你有用,请随意赞赏