mysql执行计划怎么看

mysql执行计划怎么看

  • 执行计划就是sql的执行查询的顺序,以及如何使用索引查询,返回的结果集的行数

  • EXPLAIN SELECT * from A where X=? and Y=?
  •  

各个参数

  • id :是一个有顺序的编号,是查询的顺序号,有几个 select 就显示几行。id的顺序是按 select 出现的顺序增长的。id列的值越大执行优先级越高越先执行,id列的值相同则从上往下执行,id列的值为NULL最后执行。

  • selectType 表示查询中每个select子句的类型

    • SIMPLE: 表示此查询不包含 UNION 查询或子查询

    • PRIMARY: 表示此查询是最外层的查询(包含子查询)

    • SUBQUERY: 子查询中的第一个 SELECT

    • UNION: 表示此查询是 UNION 的第二或随后的查

    • DEPENDENT UNION: UNION 中的第二个或后面的查询语句, 取决于外面的查询

    • UNION RESULT, UNION 的结果

    • DEPENDENT SUBQUERY: 子查询中的第一个 SELECT, 取决于外面的查询. 即子查询依赖于外层查 询的结果.

    • DERIVED:衍生,表示导出表的SELECT(FROM子句的子查询)

  • table:表示该语句查询的表

  • type:优化sql的重要字段,也是我们判断sql性能和优化程度重要指标。他的取值类型范围:

    • const:通过索引一次命中,匹配一行数据

    • system: 表中只有一行记录,相当于系统表;

    • eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配

    • ref: 非唯一性索引扫描,返回匹配某个值的所有

    • range: 只检索给定范围的行,使用一个索引来选择行,一般用于between、<、>;

    • index: 只遍历索引树;

    • ALL: 表示全表扫描,这个类型的查询是性能最差的查询之一。 那么基本就是随着表的数量增多,执行效率越慢

  • 执行效率:

    • ALL < index < range< ref < eq_ref < const < system。最好是避ALL和index

  • possible_keys:它表示Mysql在执行该sql语句的时候,可能用到的索引信息,仅仅是可能,实际不一定会用到。

  • key:此字段是 mysql 在当前查询时所真正使用到的索引。 他是possible_keys的子集

  • key_len:表示查询优化器使用了索引的字节数,这个字段可以评估组合索引是否完全被使用,这也是我们优化sql时,评估索引的重要指标

  • rows:mysql 查询优化器根据统计信息,估算该sql返回结果集需要扫描读取的行数,这个值相关重 要,索引优化之后,扫描读取的行数越多,说明索引设置不对,或者字段传入的类型之类的问题,说明要优化空间越大

  • filtered:返回结果的行占需要读到的行(rows列的值)的百分比,就是百分比越高,说明需要查询到数据越准确, 百分比越小,说明查询到的数据量大,而结果集很少

  • extra

    • using filesort :表示 mysql 对结果集进行外部排序,不能通过索引顺序达到排序效果。一般有using filesort都建议优化去掉,因为这样的查询 cpu 资源消耗大,延时大。

    • using index:覆盖索引扫描,表示查询在索引树中就可查找所需数据,不用扫描表数据文件,往往说明性能不错。

    • using temporary:查询有使用临时表, 一般出现于排序, 分组和多表 join 的情况, 查询效率不高,建议优化。

    • using where :sql使用了where过滤,效率较高。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT枫斗者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值