MySQL 深入浅出数据库索引原理(转)
Posted 寻觅beyond
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 深入浅出数据库索引原理(转)相关的知识,希望对你有一定的参考价值。
官方权威文档:https://dev.mysql.com/doc/refman/5.7/en/execution-plan-information.html,本文是摘抄的官网手册。
原文地址:https://www.cnblogs.com/-beyond/p/9429518.html
目录
2.1 traditional形式
2.2 json形式
三.explain输出内容介绍
3.1 table
3.2 select_type
3.3 partitions
3.4 type
3.5 key
3.6 key_len
3.7 possible_keys
3.8 ref
3.9 rows
3.10 filtered
3.11 extra
一.explain介绍
explain,可以用来分析查询执行计划;
可以使用explain来分析select、update、delete、insert、replace命令的查询计划,当explain与这些语句一起使用时,可以得到mysql优化器对该sql执行计划的信息,也就是说,MySQL解释了它将如何处理该sql,包括有关如何连接表以及以何种顺序连接表的信息;
借助explain,您可以看到可能使用的索引,以便通过使用索引查找行来使语句更快地执行;
您还可以explain用来检查优化器是否以最佳顺序连接表;
需要注意的是,explain命令在分析查询计划的时候,并不会真正执行sql,可以看下面的示例:
二.explain输出形式
使用explain分析sql的执行计划时,对于输出的内容,可以选择traditional和json两种形式,使用format进行指定。
2.1 traditional形式
traditional(也就是table形式)是默认的输出形式,如下图所示:
2.2 json格式
指定format=json即可,如下图所示:
2.3 traditional与json的对应关系
注意上面两张图中,json和traditional两种形式,对应的字段名称不是一样的,具体的对应关系如下图所示:
三.explain输出内容解释
3.1 table
sql涉及到的表,都会有一行描述该表的查询计划,比如下面用到了user表和other_info表,那么最终的查询计划会给出两个表的各自查询计划。
3.2 select_type
3.3 partitions
如果查询涉及的数据库表使用了分区,那么partition字段列表示的就是具体查询的哪个分区。
如果查询涉及的库表没有使用分区,那么partition字段为null;
3.4 type
3.5 key
3.6 key_len
3.7 possible_keys
3.8 ref
3.9 rows
3.10 filtered
3.11 extra
以上是关于MySQL 深入浅出数据库索引原理(转)的主要内容,如果未能解决你的问题,请参考以下文章