当前位置: 首页 > 网络应用技术

说明详细的解释和索引优化最佳实践

时间:2023-03-07 18:56:52 网络应用技术

  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的查询。

  当有联盟时,联合结果的表列的值为,1和2表示联合的选择ID。

  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索引。目前,额外正在使用索引