摘要:
小表驱动大表为了减少匹配时的数据量
判断谁做小表时,是比较算上过滤条件后的数量
left join时手动设置小表驱动大表
inner join时优化器会自动小表驱动大表
course–100条数据
student_info–100w条数据
优化器会选择小表驱动大表(这里表指的是结果集)
EXPLAIN SELECT a.*,b.* FROM
coursea JOIN
student_info b ON a.
course_id=b.
course_id``
加上过滤student_info的条件
EXPLAIN
SELECT a.*,b.* FROM `course` a JOIN `student_info` b ON a.`course_id`=b.`course_id` WHERE b.`student_id`=1
执行计划改变,由小表student_info驱动大表course,得出优化器先走where后join的结论。
论证:查看优化器执行(只截取from后的内容)
from atguigudb1
.course
a
join atguigudb1
.student_info
b
where ((atguigudb1
.a
.course_id
= atguigudb1
.b
.course_id
) and (atguigudb1
.b
.student_id
= 1))