MySQL安装文档参考:https://blog.csdn.net/yougoule/article/details/56680952
解释工具简介解释关键字的使用可以模拟优化器执行SQL语句,并分析您的查询语句或结构性能瓶颈。
在选择语句之前添加说明关键字。MySQL将在查询上设置标记,查询将返回执行计划的信息,而不是执行此SQL。
注意:如果从包含子查询中,仍将执行子查询,结果将放置在临时表中。
解释分析示例请参阅官方文件:https://dev.mysql.com/doc/refman/5.7/enplain-ian
在查询中,每个表将输出一条线。如果两个表通过联接连接到查询,则将输出两行。
在下一步说明中的列中,我们将在解释中显示每列的信息
1. ID列ID的数量是SELECT的序列号。有几个ID具有几个选择,并且ID的顺序按选择的顺序增加。
ID列越大,优先级越高,ID越高,并且ID从上到下执行,并且ID由NULL执行。
2. select_type列select_type表示一个简单或复杂的查询。
使用此示例了解主要,子Qury和派生类型
5.工会:第二和随后的联盟选择
3.表列的此列指示哪个表正在访问解释。
当从子句具有查询时,表列为这是指ID = n查询的当前查询依赖项,因此首先执行ID = n的查询。
当有联盟时,联合结果的表列的值为
null:MySQL可以在优化阶段分解查询语句,并且无需在执行阶段访问表或索引。例如:选择“索引”列中的最小值,您可以找到单独完成的索引,并且可以找到索引。您不想在执行时访问表。
4.此类型列是关联的类型或访问类型,即MySQL确定如何查询表中的行并查询数据行记录的大致范围。
从最佳到最差的顺序:系统> const> eq_ref> range> index>
一般来说,最好达到范围水平,最好到达参考
const,系统:MySQL可以优化查询的某个部分并将其转换为常数。与所有主键或唯一键的所有列相比,最多可以匹配表格,最多读取,一次阅读一次,并且速度更快。
系统是const的一种特殊情况,只有一个翡翠脚匹配的价值系统。
EQ_REF:连接并使用了主要密钥或唯一键索引的所有部分,最多只能返回一个合格的记录。这可能是const以外的最佳连接类型。简单选择无法查询这种类型的类型。
参考:与eq_ref相比,它不适合唯一索引,而是使用普通索引或唯一索引的一部分。必须将索引与一定值进行比较,并且可以找到多个条件。
范围:范围扫描通常出现在()中,> ,,,,,<,>=等待操作。使用线路检索给定范围。
索引:扫描整个索引以获取结果。通常,扫描耳机索引。该扫描将不会从索引树的根节点快速找到。简而言之,此查询通常用于覆盖索引。第二级索引通常较小,所有索引的传递速度都比所有索引快。
所有:也就是说,完整的表扫描,扫描群集索引的所有叶子节点,通常需要增加索引以优化。
5.可能的_keys列显示查询可以使用这些索引来查找。
可能在解释过程中列出了可能的_keys,关键显示了空的情况。这种情况是因为表中的数据不多。MySQL认为索引查询没有太大帮助,并且选择了完整的查询。
如果将其列为null,则没有相关的索引。在这种情况下,您可以检查是否可以通过检查Where Word来创建适当的索引来改善查询性能,然后使用Inlups来查看效果。
6.密钥列显示MySQL的哪些索引实际上使用了对表的访问的优化。
如果没有索引,则该列为null。如果要强制MySQL使用或忽略了可能的_keys列中的索引,请使用力索引并忽略查询中的索引。
7. key_len列显示了索引中MySQL使用的字节数。通过此值,它可以计算索引中的哪些列。
例如,file_actor的组合索引IDX_FILM_ACTOR_ID由两个int columry列组成:film_id and actor_id,每个int是4个字节。通过此结果的key_len = 4,第一列是使用:推断出QUERY:the QUERY:film_id tormin_id tormin_id to film_id to film_id to film_id to执行索引查询。
KEY_LEN计算规则如下:
索引的最大长度为768字节。当字符串太长时,MySQL将对左手索引进行处理,并在上半年作为索引提取字符。
8.参考列显示了键列中记录的索引中记录的表中使用的列或常数。
9.行列是我想由MySQL读取和检测到的行数。请注意,这不是结果集中的行数。
10.额外的列显示其他信息。共同的重要值如下:
4.2。film.name创建IDX_NAME索引。目前,查询对使用索引进行了额外的处理,并且没有使用临时表。
5.2名称已建立IDX_NAME索引。目前,额外正在使用索引