mysql优化-jion

一、jion执行流程

select * from t1 straight_join t2 on  t1.a = t2.a  假设 两个表a上都有索引,且强制以t1作为驱动表

执行过程:

  • 从t1中读取一行数据R1
  • 去t2的a索引树上找a=R1.a的id
  • t2回表获取R2于R1组成一个结果
  • 重复步骤

select * from t1 straight_join t2 on (t1.a=t2.b);假设 两个表a上都有索引,b没有索引,且强制以t1作为驱动表

执行过程:

  • 把t1的数据放入jion_buffer中(join_buffer 放不下,就分段放)
  • 从t2中取一行R2出来
  • 在join_buffer中找a = R2.b的记录R1,组成结果
  • 重复步骤

二、优化

  • 尽量让sql走第一种流程,也就是非驱动表要建立索引
  • 小表做驱动表(扫描次数少)ps:小表是指经过where 条件筛选后,行数较小,select字段较少的表
posted @ 2022-03-14 22:20  hugeQAQ  阅读(26)  评论(0编辑  收藏  举报