暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

问 | Mysql执行计划咋看?

原创 杨磊 2022-08-04
548

Mysql中的explain查看执行计划

使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析业务查询语句或是表结构的性能瓶颈。

  1. 怎么使用?
    explain + sql语句。

  2. 执行计划包含的信息:
    id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra

访问类型,sql查询优化中一个很重要的指标,结果值从好到坏依次是:

重点说下第四个字段的含义:
type:访问类型排列,显示查询使用了哪一种类型,从最好到最差依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

一般来说,得保证查询到range级别,最好能到ref级别。

参数值解释:
System:表中只有一行记录(等于系统表),这是const类型的特例,平时不会出现,这个可以忽略不计。

Const:表示通过索引一次就找到了,const用于比较primary key或者unique索引。因为只匹配一行数据,所以很快。例如将主键置于where列表中,mysql将该查询转为一个常量。

Eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描。

Ref:非唯一性索引扫描,返回匹配某个单独值得所有行。

Range:只检索给定范围的行,使用一个索引来选择行。Key列显示使用了哪个索引,一般就是在你的where语句中出现了between, <, >, in等的查询。这种范围扫描比全表扫描,因为它只需要开始于索引的某一点,而结束于另一点,不用扫描全部索引。

Index:full index scan全索引扫描,index与all的区别为:index类型只遍历索引树,这通常比all快,因为索引文件通常比数据文件小。也就是说虽然index和all都是读全表,但index是从索引中读的,而all是从硬盘中读的。

All:全表扫描,是最慢的类型。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论