mysql中explain执行结果各个字段的意思

1.Explain执行计划——SQL优化神器

        用法:

EXPLAIN SELECT * FROM pms_category WHERE parent_cid=0

       运行结果:  

 通过在SQL语句前面加上explain关键字,执行后并不会真正的执行sql语句本身,而是通过explain 工具来分析当前这条SQL语句的性能细节:比如是什么样的查询类型、可能用到的索引及实际用到 的索引,和一些额外的信息。

2.各字段的解释(重要字段)

   1)select_type列

  • derived:

第一条执行的sql是from后面的子查询,该子查询只要在from后面,就会生成一张衍生表,因此他的查询类型:derived

  • subquery:

在select之后 from之前的子查询

  • primary:

最外部的select

  • simple:

不包含子查询的简单的查询

  • union:

使用union进行的联合查询的类型

    2)table列   

当前查询正在查哪张表

    3)type列

type列可以直观的判断出当前的sql语句的性能。type里的取值和性能的优劣顺序如下:

        null > system > const > eq_ref > ref > range > index > all

对于SQL优化来说,要尽量保证type列的值是属于range及以上级别。

   4)id列

在多个select中,id越大越先执行,如果id相同。上面的先执行。

   5)possible keys列

这一次的查询可能会用到的索引。也就是说mysql内部优化器会进行判断,如果这一次查询走索引的性能比全表扫描的性能要查,那么内部优化器就让此次查询进行全表扫描——这样的判断依据我们可以通过trace工具来查看

   6)key列

实际该sql语句使用的索引

   7)rows列

该sql语句可能要查询的数据条数

   8)key_len列

        计算规则:       

- 字符串
1. char(n): n字节长度
2. varchar(n): 2字节存储字符串长度,如果是utf-8,则长度3n + 2

- 数值类型
1. tinyint: 1字节
2. smallint: 2字节
3. int: 4字节
4. bigint: 8字节

- 时间类型
1. date: 3字节
2. timestamp: 4字节
3. datetime: 8字节

如果字段允许为NULL,需要1字节记录是否为NULL
索引最大长度是768字节,当字符串过长时, mysql会做一个类似左前缀索引的处理,将前半部分的字符提取出来做索引

   9)ref列

显示该表的索引字段关联了哪张表的哪个字段

   10)extra列

extra列提供了额外的信息,是能够帮助我们判断当前sql的是否使用了覆盖索引、文件排序、使用了索引进行查询条件等等的信息。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值