MySQL- explain篇

explain中的列

1.id列

id列的值是select的序列号,有几个select就有几个id,id大的先执行,id相同则从上往下执行。

2.select_type列

表示对应行是简单查询还是复杂查询。

· simple:简单查询。查询不包含子查询和union。

· primary:复杂查询的最外层查询。

· subquery:不相关子查询,优化器会采用物化的方式执行。

· dependent_subquery:相关子查询。

· derived:在from子句中的子查询,把结果放在临时表里。

· union:union关键字后的select

· union_result:从union的结果集做select或者去重

· dependent_union:在union或union all的大查询中,如果各个小查询都依赖外查询,除最左边的小查询外,其他的都是dependent union。

3.table列

当前select行访问的表。

4.type列

表示关联类型或访问类型。按查询性能递减的方式列举:

· system:该表只有一行,const的特例。

· const:常数级查询,最多匹配一行。出现在基于主键或唯一键的等值查询。

· eq_ref:查询字段是主键或唯一键。最好的表连接类型。

· ref:查询字段是二级索引。

· fulltext:查询字段是全文索引。

· ref_or_null:类似于ref,但会额外增加null值的搜索查询。

· index_merge:索引合并。

· unique_subquery:in子查询中类似eq_ref。

· index_subquery:in子查询中类似ref。

· range:范围查询。

· index:类似ALL,但是是非聚簇索引的索引树。发生于索引覆盖或索引排序的全表扫描。

· all:全表扫描。

5.partitions

分区表

6.possible_kyes

可能会使用到的索引

7.key

实际使用的索引

8.key_len

索引字段的长度

9.ref

表在key列记录的索引中查找值所用的列或常量

10.rows

估算出要检索的行数,这个值偏大的话就要考虑SQL的优化了。

11.filtered

按表条件过滤的行的百分比

12.extra

· distinct:发现第一个匹配行后停止搜索。

· not_exists:左连接的优化。一旦找到匹配左连接标准的行,就停止检索。

· range_checked_for_each_record:没有找到合适的索引。

· using_filesort:MySQL有索引排序和外部排序两种排序方式,对应的外部排序。优化索引结构。

· using_temporary:用临时表保存中间结果。根据结果集大小优化,能不用就不用,能不用磁盘临

                                时表就不用磁盘临时表,磁盘临时表一定要用的话也可以提前指定来避免内存

                                临时表到磁盘临时表的判断转换。

· using_index:使用了覆盖索引。

· using_index_condition:使用了二级索引但需要回表。

· using_where:where条件的过滤。

· using_join_buffer:获取连接条件时使用了连接缓存而不是索引。优化索引结构。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值