枯痕个人博客
立即登录 马上注册
当前位置: 大后端 > Mysql > 如何分析explain执行计划

众所周知explain可以帮助我们查看我们的执行计划,判定索引命中情况等等。本人曾查看过很多文章

大多数文章介绍的都是一套流程,索性不如自己记录一波。

当分析一个sql语句时,会返回多列(复杂查询),各列作用如此:

ID:不要小看它,他的值越大表示执行等级越高哦

同时也表示越先执行哦!

select_type:

simple 不包含子查询或者union操作的查询

primary:查询中如果包含任何子查询,那么最外层查询则被标记为primary

subquery:select列表中的子查询

dependent primary:依赖外部结果的子查询

union:union操作的第二个或是之后查询的值为union

dependent union :当union作为子查询,第二个或第二个之后的union查询的值

union result:union产生的结果集

derived:出现在from子句中的子查询

table:

输出数据行所在的表名

<union M,N>由ID为M,N查询union产生的结果集

<derivedN>/<subqueryN>由ID为N查询产生的结果

partitions:

对于分区表,显示查询分区ID (尽量别跨分区哦)

非分区表,显示为NULL

type:

extra:

distinct:优化diatinct操作,在找到第一组匹配的元组后即停止查找同样值的操作

not exists:使用not exists来优化查询

using filesort:使用格外操作进行排序,通常会出现在orderby或groupby中

using:使用了覆盖索引查询

using temporary:mysql需要用临时表来处理查询,常见于排序,子查询,和分组查询中

using where:需要在mysql中使用where条件来过滤数据

select tables optimizen away:直接通过索引来获取数据不需要通过表

possible_keys:

指出mysql能使用哪些索引来优化查询

查询列所涉及到的列上的索引都会被列出,但不一定会被使用。

key:

查询优化器优化查询实际所使用的索引

如果没有可用索引则显示为NULL

如查询使用了覆盖索引,则该索引只出现在key中

key_len:

表示索引字段可能的最大长度

key_len的长度由字段定义计算而来,并非数据的具体长度

ref:

表示哪些列或常量被用于查找索引列上的值

row:

表示mysql通过索引统计信息,估算所需读取的行数

rows值的大小是个抽样结果,并不十分准确

filtered列

表示返回的结果的行数占需读取行数的百分比

filtered值越大越好

filtered列依赖于统计信息

执行计划的限制:

无法展示存储过程,触发器,udf对触发器的影响

无法使用explain对存储过程进行分析

早期版本的mysql只支持对select语句的分析

建立联合索引首先要计算区分度哦

(select count(distinct status)/count(*) as status_rate ,count(distinct product_id)/count(*)as product_rate from table)此处为查询两个where条件(status/product_id)的区分度(谁在最左侧原则),返回值越接近1则区分度越好

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(1) 打赏
欢迎打赏您的小可爱~~~~

支付宝扫一扫打赏

微信扫一扫打赏

上一篇:

下一篇:

相关推荐

1 条评论关于"如何分析explain执行计划"

最新评论

  1. admin
    Windows 10 Chrome 85.0.4183.121

    挺不错,格式调整一下更完美

  2. 暂无留言哦~~

博客简介

枯痕个人博客: xiaole.biz,一个关注Web后端开发技术、关注用户体验、坚持更多原创实战教程的个人网站,愿景:成为宇宙中最具有代表性的后端博客,期待您的参与。

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 105 篇
  • 草稿数目: 1 篇
  • 分类数目: 26 个
  • 独立页面: 4 个
  • 评论总数: 9 条
  • 链接总数: 5 个
  • 标签总数: 169 个
  • 注册用户: 8 人
  • 访问总量: 8,756,239 次
  • 最近更新: 2021年7月23日
服务热线:
 156144**650

 QQ在线交流

 旺旺在线