内连接过程

  1. 选取驱动表,使用与驱动表相关的过滤条件,选取代价最低的单表访问方法来执行对驱动表的单表查询。
  2. 对上一步中查询驱动表得到的结果集中每一条记录,都分别到被驱动表中查询匹配的记录。

    嵌套循环连接(Nested-Loop Join)

    驱动表只访问一次,但被驱动表却可能被多次访问,访问次数取决于对驱动表执行单表查询后的结果集中的记录条数。

使用索引加快连接速度

基于块的嵌套循环连接(Block Nested-loop Join)

核心是尽量减少访问被驱动表的次数。
join buffer:就是执行连接查询前申请一块固定大小的内存,先把若干条驱动表结果集中的记录装在这个join buffer中,然后开始扫描被驱动表,每一条被驱动表的记录一次性和join buffer中的多条驱动表记录做匹配,因为匹配的过程都是在内存中完成的,所以这样可以显著减少被驱动表的I/O代价。