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