mysql join 驱动表
以一个大表和一个小表为例,已在mysql验证过:
1.驱动表和被驱动表
使用explain查看,第一行的表是驱动表,第二行的表是被驱动表
2.left join 驱动表
没有 on 条件:报错。
有 on 条件:没有 where 条件,永远左表做驱动表。
有 where 条件:
取经过where条件过滤后的小表做驱动表,小表并不指数据量小,包括列数量,索引命中后的数据量综合考虑。
3.inner join 驱动表
on 条件规则:
全无索引命中或全有索引命中,选小表做驱动表。
有一个表命中索引,选未命中的表做驱动表。
where 条件规则:
取经过where条件过滤后的小表做驱动表,小表并不指数据量小,包括列数量,索引命中后的数据量综合考虑。
where规则 > on规则