A Hash loop
B Batched Key Access
C Index Nested-LoopJoin
D Block Nested-Loop
E Nested-Loop Join
C Index Nested-LoopJoin
D Block Nested-Loop
E Nested-Loop Join
评论
有用 1ABCDE 都有吧。
A 是8.x版本才有的
D 是在没有索引的情况下 对E的优化
C 是有索引的情况下 对E的优化
B 是再次对C的一种优化方式。 但一般很少开启。因为排序同样也有成本开销。
评论
有用 1B Batched Key Access
C Index Nested-LoopJoin
D Block Nested-Loop
E Nested-Loop Join
评论
有用 5A Hash loop=====>准确的应该叫hash join,mysql从8.0开始支持两个表通过hash join进行关联。
B Batched Key Access=====》将外层循环的行/结果集存入join buffer,内层表通过索引访问,并按主键顺序排序,批量提交给存储引擎获取数据。
C Index Nested-LoopJoin=====》当关联字段有索引的时候,可以被当作内表,外表取一行数据,通过内表索引,在内表进行查询。
D Block Nested-Loop=====》将外层循环的行/结果集存入join buffer, 内层循环的每一行与整个buffer中的记录做比较,从而减少内层循环的次数,关联字段无索引。
E Nested-Loop Join ======》内外两层循环,对外循环中的每条记录,都要再内循环中做一次检索。
以上BCDE均是NL的方法,BC是关联条件有索引的情况,B比C效率高,DE是关联条件无索引的情况。D比E效率高。
评论
有用 3
墨值悬赏


