1 left join
EXPLAIN SELECT * FROM class LEFT JOIN book ON class.card = book.card;
LEFT JOIN条件用于确定如何从右表搜索行, 左边一定都有,
#所以右边是我们的关键点,一定需要建立索引。

结论:在优化关联查询时,只有在被驱动表上建立索引才有效! 
          left join 时,左侧的为驱动表,右侧为被驱动表

2 right join
条件用于确定如何从左表搜索行, 右边一定都有
EXPLAIN SELECT*FROM class RIGHT JOIN book ON class.card=book.card;
所以左边是我们的关键点,一定需要建立索引。

3 inner join 时
mysql 会自己帮你把小结果集的表选为驱动表。 
但是会强制将左侧作为驱动表!
记住:永远用小的结果集驱动大的结果集

4 多表关联时
EXPLAIN SELECT ed.name '人物',c.name '掌门' FROM (SELECT e.name,d.ceo from t_emp e LEFT JOIN t_dept d on e.deptid=d.id) ed LEFT JOIN t_emp c on ed.ceo= c.id;(较好)

EXPLAIN SELECT e.name '人物',tmp.name '掌门' FROM t_emp e LEFT JOIN (SELECT d.id did,e.name FROM t_dept d LEFT JOIN t_emp e ON d.ceo=e.id)tmp ON e.deptId=tmp.did;

上述两个案例,第一个查询效率较高,且有优化的余地。
第二个案例中,子查询作为被驱动表,由于子查询是虚表, 无法建立索引,因此不能优化。

结论:子查询尽量不要放在被驱动表,有可能使用不到索引; 
          left join时,尽量让实体表作为被驱动表。

能够直接多表关联的尽量直接关联,不用子查询!

mysql索引优化 - 多表关联查询优化相关推荐

  1. mysql单列索引和多列索引_浅谈MySQL索引优化

    索引基础知识总结及常见索引优化手段 一.索引简介 什么是索引? MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构. 可以简单理解为"排好序的快速查找数据 ...

  2. mysql索引优化有几种_mysql索引优化

    索引类型 从物理存储角度上,索引可以分为聚集索引和非聚集索引. 1.聚集索引(Clustered Index) 聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引. 2.非聚集索引(Non- ...

  3. mysql高级篇(二)mysql索引优化分析

    mysql高级篇笔记 mysql高级篇(一)mysql的安装配置.架构介绍及SQL语句的复习. mysql高级篇(二)mysql索引优化分析. mysql高级篇(三)查询截取分析(慢查询日志).主从复 ...

  4. MySQL第8天:MySQL索引优化分析之SQL慢

    MySQL索引优化分析之SQL慢 #编写时间:2017.3.11 #编写地点:广州 性能下降SQL慢,执行时间长,等待时间长的原因有: (1)查询语句写的不合理 (2)索引失效:单值索引.符合索引 ( ...

  5. 讲真,MySQL索引优化看这篇文章就够了

    本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开. 一.MySQL--索引基础 首先,我们将从索引基础开始介绍一下什么 ...

  6. MySQL索引优化分析

    转载来源:https://www.cnblogs.com/itdragon/p/8146439.html MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学 ...

  7. 深入理解MYSQL索引优化:多列索引

    索引是什么 是存储引擎用于找到数据的一种数据结构. C/C++ Linux服务器开发高级架构视频点击:C/C++Linux服务器开发高级架构师/Linux后台架构师-学习视频 MYSQL索引优化视频详 ...

  8. MySQL索引优化看这篇文章就够了!

    阅读本文大概需要 5 分钟. 来源:cnblogs.com/songwenjie/p/9410009.html 本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引 ...

  9. MySQL第11天:MySQL索引优化分析之性能分析

    MySQL索引优化分析之性能分析 一.MySQL Query Optimizer 二.MySQL常见瓶颈 三.Explain(执行计划) 1.什么是执行计划?          2.执行计划能干什么? ...

最新文章

  1. C++的 STL堆 实现获取中位数
  2. Elasticsearch如何做到亿级数据查询毫秒级返回?
  3. 计算机旁边快速访问没有桌面图标了怎么办,桌面找不到我的电脑(计算机)图标的解决办法-win10桌面显示我的电脑...
  4. linux java 查找进程中的线程
  5. 多元正态分布的后验采样(包含程序)
  6. android 读取sd卡中string.xml,android,从SD卡读取xml文件中的值
  7. Web Hacking 101 翻译完成
  8. fatal: protocol error: bad line length character: No s原因
  9. Visual Studio 2017 15.5 正式发布,性能再提升
  10. can test 接收报文_CAN总线
  11. 最新北京市生活常用电话一览表
  12. Redis分布式锁真的安全吗?
  13. 对图片或者PDF流文件加水印
  14. Pictures of Ascii Art
  15. opencv打卡65: Zhang-Suen细化算法
  16. 计算机专业的女孩穿搭,大学里女生一般喜欢男生怎样穿搭
  17. 哪些行业用到GPS定位系统_GPS平台_GPS定位平台系统,定位监控系统平台
  18. 【C语言】好题分享——回文对称数
  19. Python爬虫实例(一)
  20. 四、【python计算机视觉编程】照相机模型与增强现实

热门文章

  1. React项目实战之租房app项目(二)首页模块
  2. 调酒壶里的酸奶 DFS
  3. 2022-04-12 蝙蝠侠 观后感
  4. java 文件的修改_使用java来修改文件内容
  5. el-popover对应展示关闭图标
  6. 基于wasm的探索与研究(二)
  7. 全国计算机三级网络工程技术复习笔记3
  8. 盘菩提子串珠盘的是心情
  9. 汽车卤素改氙气大灯,再也不用忍受烛光了,给远光狗晃回去
  10. itextpdf 怎么下划线_Java itext生成pdf设置下划线,itextpdf,package cn.o