【MySQL】MySQL执行计划的type类型
发布时间:2023年12月19日
MySQL的执行计划中,type有以下几种类型:
- system:表只有一行记录(等于系统表),这是一个特殊情况。
- const:表示通过索引一次就找到了,const用于比较primary key或者unique索引。因为只匹配一行数据,所以很快。如将主键置于where列表中,MySQL就能将该查询转换为一个常量。
- eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描。
- ref:非唯一性索引扫描,返回匹配某个单独值的所有行。本质上也是一种索引访问,它返回的行数和使用的索引的列数一样。区别是它可能会找到多个符合条件的行。
- fulltext:全文索引检索。
- ref_or_null:与ref类似,但增加了对NULL值的匹配。
- index_merge:表示使用了索引合并优化方法。
- unique_subquery:InnoDB特有,子查询中的查询结果字段与外层查询的主键字段一致时,可以使用unique_subquery优化。
- index_subquery:InnoDB特有,子查询中的查询结果字段与外层查询的非主键字段一致时,可以使用index_subquery优化。
- range:只检索给定范围的行,使用一个索引来选择行。key列显示使用了哪个索引。一般就是在使用between、>、<、>=、<=、in等操作符时,加上索引就会触发range。
- index:Full Index Scan,index与ALL区别为index类型只遍历索引树。这通常比ALL快,因为索引文件通常比数据文件小。(也就是说虽然all全表扫描,但是数据文件可能比索引文件大很多,所以不一定比全索引扫描慢)
- ALL:Full Table Scan,遍历全表以找到匹配的行。
- index_to_join:在5.6版本以前叫做index merge。这个类型的连接算法只适用于Nested-Loop的连接方式。但是如果是多表连接查询的话,执行计划会优选Nested-Loop的方式去执行查询。
- possible_keys:可能使用的索引列表。如果为空,则没有可用的索引。在这种情况下,可以通过检查WHERE子句来提高性能。您还可以尝试添加索引来提高性能。
- key:实际使用的索引。如果为NULL,则表示没有使用索引。很少的情况下,如果MySQL估计全表扫描比使用索引快,则会选择全表扫描而不使用索引。
文章来源:https://blog.csdn.net/weixin_46601559/article/details/135057638
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!