Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践

媒介
在之前的面试过程中,问到履行筹划,有很多童鞋不知道是什么?甚至将履行筹划与履行时光认为是同一个概念。今天我们就一路来懂得一下履行筹划到底是什么?有什么竽暌姑途?
履行筹划是什么?
- //1. 萌芽t_base_user
- select * from t_base_user where name="andyqian";
- //2. 查看上述语句的履行筹划
- explain select * from t_base_user where name="andyqian";
履行查看上述2语句后,我们可以得出以下履行筹划结不雅

膳绫擎履行筹划是什么意思呢?有什么参考价值呢?
我们一一来介绍,并解释每个属性有哪些可选值,以及每个可选值的意思。
- id
膳绫擎这个履行筹划给到的信息是: 这个结不雅经由过程一个简单的语句全表扫描,共扫描1行,应用where前提在t_base_user表中筛选出的。发明该语句并没有走索引,为什么是如许的呢?别急,我们紧接着看下一节。
读懂履行筹划
经由过程膳绫擎,我们知道了什么是履行筹划,也看到了履行筹划到底是什么器械,如今我们来具体懂得一下,MySQL履行筹划中,每个属性代表的是什么意思?

显示MySQL实际应用的索引,个中就包含主键索引(PRIMARY),或者自建索引的名字。
- key_len :
表示萌芽中select操作表的次序,按次序大年夜大年夜到依次履行
- select_type :
该表示选择的类型,可选值有: SIMPLE(简单的),
- type :
该属性表示拜访类型,有很多种拜访类型。
最常见的个中包含以下几种: ALL(全表扫描), index(索引扫描),range(范围扫描),ref (非独一索引扫描),eq_ref(独一索引扫描,),(const)常数引用, 拜访速度依次由慢到快。个中 : range(范围)常见与 between and …, 大年夜于 and 小于这种情况。
提示 : 慢SQL是否走索引,走了什么索引,也就可以经由过程该属性查看了。
- table :
表示该语句萌芽的表
- possible_keys :
顾名思义,该属性给出了,该萌芽语句,可能走的索引,(如某些字段上索引的名字)这里供给的只是参考,而不是实际走的索引,也就导致会有possible_Keys不为null,key为空的现象。
- key :
看到这里,我们应当已经发明,在第一步中,我们的┞封条SQL
表示索引所应用的字节数,
- ref :
连接匹配前提,如不雅走主键索引的话,该值为: const, 全表扫描的话,为null值
- rows :
扫描行数,也就是说,须要扫描若干行,采能获取目标行数,一般情况下会大年夜于返回行数。平日情况下,rows越小,效力越高, 也就有大年夜部分SQL优化,都是在削减这个值的大年夜小。留意: 幻想情况下扫描的行数与实际返回行数理论上是一致的,但这种情况及其少,如接洽关系萌芽,扫描的行数就会比返回行数大年夜大年夜增长)
- Extra
这个属性异常重要,该属性中包含履行SQL时的┞锋实情况信息,如膳绫擎所属,应用到的是”using where”,表示应用where筛选获得的值,常用的有:
“Using temporary”: 应用临时表 “using filesort”: 应用文件排序
- select * from t_base_user where name="andyqian";
是没有走索引的,并且照样全表扫描,在数据量少的情况下,问题还不会特别凸起,如不雅数据量比较大年夜,这可是个会造成临盆变乱的慢萌芽哦,如今我们改革一下,将name字段添加上索引,
推荐阅读
从java1到java9每个版本都有什么新特性?花费五分钟全面了解
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 其实,我是个标题党,没有java1的说法,java9的新特点我也没总结。所以,来个存眷吧,说不定哪天就出了呢>>>详细阅读
本文标题:带你一起了解MySQL执行计划
地址:http://www.17bianji.com/lsqh/38872.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示