MySQL高级-性能分析Explain
1、使用Explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈 。
2、执行方法:Explain + SQL语句
解释:
①id:
select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序。
三种情况:
id相同,执行顺序由上至下
id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行
id相同不同,同时存在
②select_type
常见和常用的值有6种
查询的类型用于区分 普通查询、联合查询、子查询等的复杂查询。
SIMPLE:
简单的select查询,查询中不包含子查询或者UNION。
PRIMARY:
查询中若包含任何复杂的子部分,最外层查询则被标记为PRIMARY
SUBQUERY:
在SELECT或WHERE列表中包含了子查询。
DERIVED:
在FROM列表中包含的子查询被标记为DERIVED(衍生),MySQL会递归执行这些子查询,把结果放在临时表里。
UNION:若第二个SELECT出现在UNION之后,则被标记为UNION,若UNION包含在FROM子句的子查询中,外层SELECT将被标记为:DERIVED
UNION RESULT 从UNION表获取结果的SELECT。
③type:取值为下面8种
type显示的是访问类型,是较为重要的指标,结果值从最好到最坏依次是:
system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALL。
工作中常见的有:
system >const >eq_ref >ref> rang>index> all
一般来说,得保证查询至少达到range级别,最好能达到ref。
④possible_keys 和 key
possible_keys:
keys:
⑤key_len
⑥ref
⑦rows
⑧Extra
应避免出现Using Filesort(文件排序)和using temporary(临时表) 这样会导致性能下降,排序应使用和索引一致顺序和列。
3、能干嘛
表的读取顺序
数据读取操作的操作类型
哪些索引可以使用
哪些索引被实际使用
表之间的引用
每张表有多少行被优化器查询
4、JOIN语句优化
最新文章
- 旷世奇坑!!!spring 不能自动注入
- Clr Via C#读书笔记----基元线程同步构造
- Android性能优化之布局优化
- PS网页设计教程XXIV——从头设计一个漂亮的网站
- 修改Servlet模板
- OC实现同步访问属性
- php define和const的区别
- WaitForSingleObject函数
- shell:bash环境
- Java复习总结——继承
- 一个基于nuxt的基础架子,支持aixos,sass,es6,elementUI
- CString与string、char*的区别和转换
- easyui 回车搜索
- mysql自定义函数与过程中写法的注意事项
- 【java】求两个字符串的最长公共子串
- EDK II之USB主控制器(EHCI)驱动的实现框架
- 安装 Linux 内核 4.0
- python基础学习4----元组
- 【delphi】关键字详解
- ASP.NET MVC传递参数(model), 如何保持TempData的持久性