mysql执行计划中性能最差的是_面试中:mysql性能调优-执行计划explain
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相关推荐
- js判断数组中重复元素并找出_面试中常遇见的数组去重
导读 JS数组去重是面试中并不少见的问题,听起来很简单,当你兴高采烈地回答了你的方法之后,你以为这道题就结束了吗?No,一般来说,面试官会继续问你"除了你刚刚说的方法,还有其他更好的方法吗? ...
- 学Java的逻辑测试题_面试中的逻辑题测试及答案.doc
面试中的逻辑题测试及答案 面试中的逻辑题测试及答案魔豆之路 首页业界观察Android技术iOS技术分享HTML5技术JAVA & JVM测试技术分享WORDPRESS home 程序员面试秘 ...
- MySQL调优系列:explain分析SQL的执行计划
一条SQL的执行计划自我描述 [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 大数据代码案例地址: https://github. ...
- mysql左连接_面试考MySQL性能优化,一个问题就干趴下了!
MySQL作为最流行的关系型数据库管理系统,重要性不言而喻.面试时它也是重点考察对象之一,估计大家都有过被MySQL相关问题支配的经历: 如何理解MySQL中加锁原理以及最终死锁形成的原因 ? 介绍一 ...
- mysql中a b为什么是假_[灵魂拷问]MySQL面试高频问题(工程师方向)
前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面 ...
- mysql一次查询无关联多个表_面试官:为什么mysql不建议执行超过3表以上的多表关联查询?...
点关注,不迷路:持续更新Java架构相关技术及资讯热文!!! 概述 前段时间在跟其他公司DBA交流时谈到了mysql跟PG之间在多表关联查询上的一些区别,相比之下mysql只有一种表连接类型:嵌套循环 ...
- mysql数据库击穿_面试中经常出现的缓存穿透、雪崩和击穿到底是什么?
对于缓存穿透.缓存雪崩和缓存击穿常常出现在面试中,今天来看看它到底是何方神圣 redis缓存穿透 理解重在穿透吧,也就是访问透过redis直接经过mysql,通常是一个不存在的key,在数据 ...
- 在mysql中如何添加外键约束_如何在MySQL中设置外键约束
(1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...
- 找出两个字符串中所有共同的字符_面试中的两个字符串问题竟给我整懵了?!| 原力计划...
作者 | 一路向维 责编 | 王晓曼 出品 | CSDN博客 昨天收到通知,今天有个面试,一家魔都中型电商公司,名字咱就不说了.内心顿时踌躇满志.跃跃欲试,晚上还翻看面试题,做准备. 到了目的地之后, ...
最新文章
- Nginx反向代理Tomcat的配置方法
- c++ linux 线程等待与唤醒_Linux线程同步(互斥量、信号量、条件变量、生产消费者模型)...
- python序列类型有_Python序列类型
- gitbook安装与使用之windows下搭建gitbook平台
- 八、Pandas的基本使用
- HTTPS 协议到底比 HTTP 协议多些什么?
- Velocity 模板引擎介绍
- 关于div的定位属性问题
- 【B/S】ASP.NET---验证码-生成和切换
- 软件的工程化管理(二)(转)
- Windows XP_修改登录背景图案
- OPNsense - 多功能高可靠易使用的防火墙(四)
- 12.计算机网络---iptables防火墙管理工具
- macOS High Sierra 10.13.6 英伟达显卡Nvidia显卡 失效处理方案
- Springboot+vue 增删改查的小项目
- 华为存储FusionStorage(备份②)
- NAS如何进行磁盘碎片整理?
- 玄学:那些年我为之疯狂的超能力(有音频版)
- GAT-图注意力模型
- c语言实现翻页,css3实现翻页卡片
热门文章
- 分区字段必须包含在主键字段_24 个必须掌握的数据库面试问题!
- html body 间距,VBA&amp; HTMLBody - 正文和签名之间的间距
- c语言编程杨辉三角前八行思路,C语言----(杨辉三角)
- python pymysql实例_python笔记-mysql命令使用示例(使用pymysql执行)
- python经典例题图形_Python 入门经典100实例:实例23 菱形
- oracle数据库导出灰色_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...
- python读写文件绝对路径_[Spark][Python]对HDFS 上的文件,采用绝对路径,来读取获得 RDD...
- 黑客渗透入门教程 第一课:粗暴的端口扫描
- CentOS 7.4 安装 MySQL 5.6.40 完美教程
- SlickEdit 2016(V21)