mysql的sql调优大家都不陌生,可是调优前都会先看下执行计划,这个是必须的。

插播图片:

explain 这个是关键字执行如下:

explain select * from user

结果如下:

id:id相同时,执行顺序由上至下;如果包含子查询,id的序号会递增,id值越大越先被执行;

select_type:查询类型,取决于sql的查询结构,比如是否包含子查询,或者关联查询等

SIMPLE; PRIMARY; UNION; DEPENDENT UNION; UNION RESULT;SUBQUERY;DEPENDENT SUBQUERY;DERIVED; UNCACHEABLE SUBQUERY 包含这些枚举,不做过多介绍哈,也不必太纠结这个列,重点关注type列

table:这个很明显,这条数据来自哪张表,但是有时候不是一张真实表名,derived这个可以理解为临时表,为什么会有临时表,待会儿说。来看下面的例子

mysql> explain select * from (select * from ( select * from user where id=2602) a) b;

type:重点专注该列,分六个值,最优到最差const/system、eq_reg、ref、range、index,all, 一般来说,得保证查询至少达到range级别,最好能达到ref。

1,system表示只有一行数据,这种情况是const的特殊情况。不是经常出现。

2,const常量查询。 在整个查询过程中,只匹配到一行数据, 使用主键索引或者唯一索引时出现,而且只读取一次数据,为什么只读取一次?因为是聚餐索引,这个会在稍后第二讲中讲到。 因为只有一行,所以这个行中的列值可以被其他优化器视为常量。

3,eq_ref 这个情况主要是出现在关联查询中,关联的条件一般是主键或者唯一键,就是join....on 后面的条件。

4,,ref 个人理解主要是出现在关联查询中,关联条件不是主键或者唯一键的情况,这个也是eq_ref主要的区别。

5,range在一个范围查询时会出现,使用 =,<>,>,>=,,BETWEEN,IN()等操作符进行查询时可能会出现range,查询性能一般要保证这个级别

6,index 可以理解为全表扫描,但是它查找的是全部的索引树,索引树要比实际数据少很多,所以性能要比al要很多。这种情况出现在覆盖索引中,what?又来个覆盖索引?哈哈不用惊慌,覆盖索引是指 查询的列和索引字段是一样的,比如索引名称是index_AB,包含A B两列,而查询的时候刚好是select A,B from table,这个时候就用上了index类型。

7,all就是全表扫描,要多慢就有多慢,尽量避免

possible_keys表示可能用到索引,如果这个字段值是空的,那就得检查where句子是否有可用的

key表示实际用到的索引

key_len表示索引的字节长度,并非实际使用长度。以前我的理解是数据量其实是错误的,这个值也是引擎计算的,该值越小性能越好。

ref 表示索引的那一列被使用了,换句话说index_A 然后又用A 作为条件检索了数据。

rows:根据数据和索引情况大致预估出找到结果需要的匹配的行数,也就是说,用的越少越好

rows详解

Extra 一般出现在order by,group by 等情况下

1,Using filesort 文件排序,mysql 无法利用索引进行排序,成为文件排序,性能可想而知,一个字慢

2,Using temporary 临时表排序或者利用临时表分组的情况会出现,这种情况也是用不上索引

3,Covering Index这种情况是最好的结果,使用了覆盖索引的情况会出现,这种情况的效率是相对较好的

mysql执行计划中性能最差的是_面试中:mysql性能调优-执行计划explain相关推荐

  1. js判断数组中重复元素并找出_面试中常遇见的数组去重

    导读 JS数组去重是面试中并不少见的问题,听起来很简单,当你兴高采烈地回答了你的方法之后,你以为这道题就结束了吗?No,一般来说,面试官会继续问你"除了你刚刚说的方法,还有其他更好的方法吗? ...

  2. 学Java的逻辑测试题_面试中的逻辑题测试及答案.doc

    面试中的逻辑题测试及答案 面试中的逻辑题测试及答案魔豆之路 首页业界观察Android技术iOS技术分享HTML5技术JAVA & JVM测试技术分享WORDPRESS home 程序员面试秘 ...

  3. MySQL调优系列:explain分析SQL的执行计划

    一条SQL的执行计划自我描述 [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 大数据代码案例地址: https://github. ...

  4. mysql左连接_面试考MySQL性能优化,一个问题就干趴下了!

    MySQL作为最流行的关系型数据库管理系统,重要性不言而喻.面试时它也是重点考察对象之一,估计大家都有过被MySQL相关问题支配的经历: 如何理解MySQL中加锁原理以及最终死锁形成的原因 ? 介绍一 ...

  5. mysql中a b为什么是假_[灵魂拷问]MySQL面试高频问题(工程师方向)

    前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面 ...

  6. mysql一次查询无关联多个表_面试官:为什么mysql不建议执行超过3表以上的多表关联查询?...

    点关注,不迷路:持续更新Java架构相关技术及资讯热文!!! 概述 前段时间在跟其他公司DBA交流时谈到了mysql跟PG之间在多表关联查询上的一些区别,相比之下mysql只有一种表连接类型:嵌套循环 ...

  7. mysql数据库击穿_面试中经常出现的缓存穿透、雪崩和击穿到底是什么?

    对于缓存穿透.缓存雪崩和缓存击穿常常出现在面试中,今天来看看它到底是何方神圣 ​ ​ redis缓存穿透 ​理解重在穿透吧,也就是访问透过redis直接经过mysql,通常是一个不存在的key,在数据 ...

  8. 在mysql中如何添加外键约束_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  9. 找出两个字符串中所有共同的字符_面试中的两个字符串问题竟给我整懵了?!| 原力计划...

    作者 | 一路向维 责编 | 王晓曼 出品 | CSDN博客 昨天收到通知,今天有个面试,一家魔都中型电商公司,名字咱就不说了.内心顿时踌躇满志.跃跃欲试,晚上还翻看面试题,做准备. 到了目的地之后, ...

最新文章

  1. Nginx反向代理Tomcat的配置方法
  2. c++ linux 线程等待与唤醒_Linux线程同步(互斥量、信号量、条件变量、生产消费者模型)...
  3. python序列类型有_Python序列类型
  4. gitbook安装与使用之windows下搭建gitbook平台
  5. 八、Pandas的基本使用
  6. HTTPS 协议到底比 HTTP 协议多些什么?
  7. Velocity 模板引擎介绍
  8. 关于div的定位属性问题
  9. 【B/S】ASP.NET---验证码-生成和切换
  10. 软件的工程化管理(二)(转)
  11. Windows XP_修改登录背景图案
  12. OPNsense - 多功能高可靠易使用的防火墙(四)
  13. 12.计算机网络---iptables防火墙管理工具
  14. macOS High Sierra 10.13.6 英伟达显卡Nvidia显卡 失效处理方案
  15. Springboot+vue 增删改查的小项目
  16. 华为存储FusionStorage(备份②)
  17. NAS如何进行磁盘碎片整理?
  18. 玄学:那些年我为之疯狂的超能力(有音频版)
  19. GAT-图注意力模型
  20. c语言实现翻页,css3实现翻页卡片

热门文章

  1. 分区字段必须包含在主键字段_24 个必须掌握的数据库面试问题!
  2. html body 间距,VBA&amp; HTMLBody - 正文和签名之间的间距
  3. c语言编程杨辉三角前八行思路,C语言----(杨辉三角)
  4. python pymysql实例_python笔记-mysql命令使用示例(使用pymysql执行)
  5. python经典例题图形_Python 入门经典100实例:实例23 菱形
  6. oracle数据库导出灰色_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...
  7. python读写文件绝对路径_[Spark][Python]对HDFS 上的文件,采用绝对路径,来读取获得 RDD...
  8. 黑客渗透入门教程 第一课:粗暴的端口扫描
  9. CentOS 7.4 安装 MySQL 5.6.40 完美教程
  10. SlickEdit 2016(V21)