explan

编程 阿里云知识 1个月前 (04-19) 54次浏览 扫描二维码

MySQL中的EXPLAIN是一个用于分析查询语句的工具,它可以帮助开发人员优化查询语句的性能。当在SQL语句前面加上EXPLAIN时,MySQL会对查询打上标记,而不是真正执行查询,然后模拟SQL优化器返回执行计划。本文将针对提供的搜索结果对MySQL中的EXPLAIN进行详细解读。

首先,让我们来看看EXPLAIN中的各列说明。根据,这些列如下:

  1. id:表示SELECT查询的序列号。同一查询中的每个SELECT语句都有一个唯一的序列号。
  2. select_type:表示SELECT查询的类型。SELECT查询可以分为简单(simple)和复杂(complex)两种类型。复杂类型又分为子查询(subquery)和包含子查询的from列表(derived)。
  3. table:表示输出行所引用的表。
  4. partitions:表示匹配表的分区。
  5. type:表示使用的连接类型,按连接类型的不同,性能也会有所不同。常见的连接类型包括ALL、index、range、ref、eq_ref、const和system。
  6. possible_keys:表示可能使用的索引。
  7. key:表示实际使用的索引。
  8. key_len:表示使用的索引的长度。
  9. ref:表示连接使用的列或常量。
  10. rows:表示MySQL认为必须检查的行数。
  11. filtered:表示查询时条件过滤的行数占总行数的百分比。
  12. Extra:表示MySQL使用的额外信息,例如使用了哪些索引、是否使用了临时表等。

根据,type列是显示使用的连接类型。常见的连接类型包括:

  • ALL:全表扫描,性能最差。
  • index:按索引次序扫描,先读。
  • range:只检索给定范围的行,使用一个索引来选择行。
  • ref:使用非唯一索引扫描或者唯一索引的前缀扫描,返回匹配某个单独值的记录行。
  • eq_ref:类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接使用 primary key 或者 unique key 作为关联条件。
  • const:当MySQL对查询某部分进行优化并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量。
  • system:是const类型的特例,当查询的表只有一行的情况下,使用system。

根据,EXPLAIN输出的Extra列可以包含以下信息:

  • Using filesort:MySQL中无法利用索引完成的排序操作称为“文件排序”。
  • Using join buffer:该值强调了在获取连接条件时没有使用索引,并且需要连接缓存区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进性能。
  • Impossible where:这个值强调了where语句会导致没有符合条件的行。
  • Select tables optimized away:这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行。
  • Using sort_union(...)、Using union(...)、Using intersect(...):当MySQL决定要在一个给定的表上使用超过一个索引的时候,就会出现这些格式中的一个,详细说明使用的索引以及合并的类型。

根据[cnblogs.com](

喜欢 (0)
阿里云最新优惠活动,点击查看
腾讯云最新优惠活动,点击查看
腾讯云香港及海外免备案服务器优惠活动,点击查看
华为云服务器本周优惠活动,点击查看