如何使用join

如何使用join

  • 如果能用到被驱动表的索引,则使用join比拆成多个单表执行的sql来的快
  • 使用join的话,让小表做驱动表
  • 在决定哪个表做驱动表的时候,应该是两个表按照各自的条件过滤,过滤完成之后,计算参与 join 的各个字段的总数据量,数据量小的那个表,就是“小表”,应该作为驱动表。
  • 如果使用Block Nasted-Loop join算法,有可能导致join buffer不够大,导致被驱动表做多次全表扫描,所以在explain的时候Extra字段里面出现Block Nasted-Loop的话,就尽量不要使用join了
  • Index Nasted-Loop join算法:先找出驱动表符合条件的数据,一行一行去被驱动表匹配,最后到结果集中拼接如何使用join
  • Block Nasted-Loop join算法:把满足条件的驱动表数据放入join buffer中,从驱动表中拿数据和join buffer匹配,匹配到的放到结果集
    join buffer 默认是256k,放不下的话,就分段放,分几次,就有几次被驱动表的扫描如何使用join