MySQL执行计划剖析_玖富娱乐主管发布


玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。

一. 实行计划能通知我们甚么?

  • SQL怎样运用索引
  • 连接查询的实行递次
  • 查询扫描的数据函数

二. 实行计划中的内容

SQL实行计划的输出能够为多行,每一行代表对一个数据库工具的操纵

1. ID列

  • ID列中的若是数据为一组数字,透露表现实行SELECT语句的递次;若是为NULL,则申明这一行数据是由别的两个SQL语句举行 UNION操纵后发生的效果集
  • ID值相同时,申明SQL实行递次是依照显现的从上至下实行的
  • ID值不同时,ID值越大代表优先级越高,则越先被实行

演示

能够看到上面的实行计划返回了3行效果,id列的值能够看做是SQL中所具有的SELECT操纵的序号
因为上述SQL中只要一个SELECT,以是id全为1,因而,我们就要依照由上至下读取实行计划
依照我们的SQL语句,我们会以为实行递次是a,b,c,然则经由历程上图能够发明,Mysql其实不是完成依照SQL中所写的递次来举行表的联系关系操纵的
实行对表的实行递次为a,c,b,这是因为MySQL优化器会依据表中的索引的统计信息来调解表联系关系的现实递次

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。-

2. SELECT_TYPE列

寄义
SIMPLE 不包罗子查询或是UNION操纵的查询
PRIMARY 查询中若是包罗任何子查询,那末最外层的查询则被标记为PRIMARY
SUBQUERY SELECT 列表中的子查询
DEPENDENT SUBQUERY 依靠外部效果的子查询
UNION Union操纵的第二个或是以后的查询的值为union
DEPENDENT UNION 当UNION作为子查询时,第二或是第二个后的查询的select_type值
UNION RESULT UNION发生的效果集
DERIVED 出现在FROM子句中的子查询

3. TABLE列

包罗以下几种效果:

输出去数据行地点表的称号,若是表取了别号,则显现的是别号
<union M,N>: 由ID为M,N查询union发生的效果集
<derived N>/<subquery N> :由ID为N的查询发生的效果

4. PARTITIONS列:

查询婚配的纪录来自哪个分区
关于分区表,显现查询的分区ID
关于非分区表,显现为NULL

5. TYPE列

按机能从高至低分列以下:

寄义
system 这是const连接范例的一个惯例,当查询的表只要一行时运用
const 表中有且只要一个婚配的行时运用,如对主键或是独一索引的查询,这是效力最高的连接体式格局
eq_ref 独一索引或主键索引查询,对应每一个索引键,表中只要一条纪录与之婚配
ref 非独一索引查找,返回婚配某个零丁值的一切行
ref_or_null 类似于ref范例的查询,然则附加了对NULL值列的查询
index_merge 该连接范例透露表现运用了索引兼并优化要领
range 索引局限扫描,常见于between、>、<如许的查询前提
index FULL index Scan 全索引扫描,同ALL的区别是,遍历的是索引树
ALL FULL TABLE Scan 全表扫描,这是效力最差的连接体式格局

6. Extra列

包罗MySQL怎样实行查询的附加信息

寄义
Distinct 优化distinct操纵,在找到第一个婚配的元素后即住手查找
Not exists 运用not exists来优化查询
Using filesort 运用分外操纵举行排序,一般会出现在order by或group by查询中
Using index 运用了掩盖索引举行查询
Using temporary MySQL须要运用暂时表来处理查询,常见于排序,子查询,和分组查询
Using where 须要在MySQL服务器层运用WHERE前提来过滤数据
select tables optimized away 直接经由历程索引来取得数据,不消接见表,这类状况一般效力是最高的

7. POSSIBLE_KEYS列

  • 指出MySQL能运用哪些索引来优化查询
  • 查询列所涉及到的列上的索引都会被列出,但不肯定会被运用

8. KEY列

  • 查询优化器优化查询现实所运用的索引
  • 若是表中没有可用的索引,则显现为NULL
  • 若是查询运用了掩盖索引,则该索引仅出现在Key列中

9. KEY_LEN列

显现MySQL索引所运用的字节数,在团结索引中若是有3列,如果3列字段总长度为100个字节,Key_len显现的能够会小于100字节,好比30字节,这就申明在查询历程当中没有运用到团结索引的一切列,只是应用到了前面的一列或2列

  • 透露表现索引字段的最大能够长度
  • Key_len的长度由字段界说盘算而来,其实不是数据的现实长度

10. Ref列

  • 透露表现以后表在应用Key列纪录中的索引举行查询时所用到的列或常量

11. rows列

  • 透露表现MySQL经由历程索引的统计信息,预算出来的所需读取的行数(联系关系查询时,显现的是每次嵌套查询时所须要的行数)
  • Rows值的巨细是个统计抽样效果,其实不非常正确

12. Filtered列

  • 透露表现返回效果的行数占需读取行数的百分比
  • Filtered列的值越大越好(值越大,注解现实读取的行数与所须要返回的行数越靠近)
  • Filtered列的值依靠统计信息,以是一样也不是非常正确,只是一个参考值

三. 实行计划的限定

  • 没法展现存储历程,触发器,UDF对查询的影响
  • 没法运用EXPLAIN对存储历程举行剖析
  • 初期版本的MySQL只支撑对SELECT语句举行剖析
-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。