mysql join 驱动表

以一个大表和一个小表为例,已在mysql验证过:

 

1.驱动表和被驱动表

使用explain查看,第一行的表是驱动表,第二行的表是被驱动表

 

2.left join 驱动表

没有 on 条件:报错。

有 on 条件:没有 where 条件,永远左表做驱动表。

有 where 条件:

取经过where条件过滤后的小表做驱动表,小表并不指数据量小,包括列数量,索引命中后的数据量综合考虑。

 

3.inner join 驱动表

on 条件规则:

全无索引命中或全有索引命中,选小表做驱动表。

有一个表命中索引,选未命中的表做驱动表。

where 条件规则:

取经过where条件过滤后的小表做驱动表,小表并不指数据量小,包括列数量,索引命中后的数据量综合考虑。

where规则 > on规则

posted @ 2023-10-26 14:56  Dream's  阅读(34)  评论(0)    收藏  举报