为了账号安全,请及时绑定邮箱和手机立即绑定

多个left join优化

多个left join优化

隔江千里 2018-08-02 20:56:02
tables:employeeemployee_orgn:联合主键(employee_id,orgn_id),索引1:employee_id,索引2:orgn_idorgnsql:explain SELECT DISTINCT     e.*FROM     employee e         LEFT JOIN     employee_orgn eo ON eo.employee_id = e.id        LEFT JOIN     orgn o ON o.id = eo.orgn_idWHERE     e.state != 'deleted'         AND e.state != 'hidden'         AND (o.state != 'hidden' OR o.state IS NULL)ORDER BY e.id DESCexplain:Q:这里join联查,mysql嵌套循环查询了10的8次方的数量级吗?为什么有临时表,和排序为什么是文件排序为什么第二行是覆盖索引希望讲解一下这个explain结果,优化分析感激不尽呀~
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

1、注意看数字8的表头key_len,说的是使用索引字段的长度。
2、Using tempory, Using filesort是受order by语句的影响,你可以去掉order by再看一下执行计划。
3、eo表使用覆盖索引是合理的,因为索引已经包含了查询所需的所有数据。

查看完整回答
反对 回复 2018-08-04
  • 1 回答
  • 0 关注
  • 1667 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信