mysql的explain执行计划

       explain显示了mysql如何使用索引来处理select语句以及连接表,无法分析存储过程、insert、update和delete等语句,可以帮助我们选择更好的索引和写出更优化的查询语句。

用法:

其中:

      1id:每个被独立执行的操作的标识,表示对象被操作的顺序;id值大,先被执行;如果相同,执行顺序从上到下;     

      2、select_type查询中每个select子句的类型:

select_type说明
SIMPLE简单SELECT语句(不是UNION操作、SELECT列不是子查询、WHERE的=条件不是子查询)
PRIMARY复杂SELECT语句中的主句,只有一个,一般是UNION语句的前表,或者是子查询中的外层表
UNION一般是UNION语句的后表
UNION RESULTUNION操作的结果,id通常为NULL
SUBQUERYSELECT列的子查询中的前表、WHERE的=条件的子查询中的前表
DERIVEDFROM子查询中UNION的前表
DEPENDENT UNIONWHERE的IN条件的子查询中的UNION的后表
DEPENDENT SUBQUERYWHERE的IN条件的子查询中的UNION的前表,或者WHERE的EXIST条件的子查询中的表

      3、table:显示每行对应的表名。若在 SELECT 语句中为表起了别名,则会显示表的别名

      4、partitions

      5、type表示的是查找类型,是较为重要的一个指标。结果值从好到坏依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL。一般来说,得保证查询至少达到range级别,最好能达到ref

type说明
system

表中仅有一行数据

const

表中只匹配一行,因为只有一个值,优化器将该列值视为常量。表示使用了PRIMARY KEY或者UNIQUE索引。

eq_ref

存储引擎是MyISAM时,从前面表的结果集中读取一行,这是除system和const外最好的连接类型。表示使用了PRIMARY KEY或者UNIQUE索引。

ref表示使用了除PRIMARY KEY或者UNIQUE索引外的其他索引。
fulltext表示使用了全文索引。
ref_or_null表示使用了除PRIMARY KEY或者UNIQUE索引外的其他索引,但是对null值做了额外的查找。
index_merge 
unique_subquery 
index_subquery 
range

表示使用索引检索给定范围内的行,比如:between、>、<这样的查询条件

index表示使用了覆盖索引
ALL表示使用全表扫描,最差的一种,应该进行优化。

      6、possible_keys表示可能会使用到的索引,如果为NULL,表示查询没有可使用的索引。

      7、key表示实际使用到的索引,如果为NULL,表示查询未使用到任何索引。

      8、key_len表示使用的索引长度。在不损失精确性的情况下,长度越短越好。

      9、ref表示查询条件索引列的使用方式。

      10、rowsmysql认为的为了返回指定查询条件的结果所必须检查的行数

      11、filtered被条件过滤掉的行数百分比

      12、Extra执行计划的其他附加信息,如果是Using temporaryUsing filesort,表示mysql根本不能使用索引,使查询很慢。

Extra说明

Using where

使用了非索引的查询条件

Using index

使用了覆盖索引

Using temporary

使用了UNION的结果集

selecttables optimized away

使用了max()、min()函数

Using filesort

使用了非PRIMARY KEY的排序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值