做网站虚拟主机推荐,什么人最需要建设网站,引擎搜索是什么意思,成都设计公司官网explain可以用于select#xff0c;delete#xff0c;insert#xff0c;update的statement。 当explain用于statement时#xff0c;mysql将会给出其优化器#xff08;optimizer#xff09;的执行计划。 通过explain字段生成执行计划表。下面来解析这个执行计划表的每一列…explain可以用于selectdeleteinsertupdate的statement。 当explain用于statement时mysql将会给出其优化器optimizer的执行计划。 通过explain字段生成执行计划表。下面来解析这个执行计划表的每一列的意义。
执行计划表的每一行都描述了查询执行计划中的一个操作或阶段。
id表示执行顺序越大越先相同按展示顺序
select_type查询的类型 SIMPLE: 一个简单的 SELECT 查询不包含子查询或 UNION。通常情况下优化器能够直接确定最佳的执行计划。 PRIMARY: 主查询复杂查询的最外层。 SUBQUERY: 不包含在form中的子查询 DERIVED: 包含在form中的子查询mysql会将查询结果放到一个临时表中 UNION: 这表示 UNION 查询的第二个或后续查询语句。
table操作的表
不重要partitions表示查询涉及的分区信息。分区是将表拆分成独立的片段每个片段称为一个分区可以根据特定的规则将数据分布到不同的分区中
type连接方法或者查找中的访问方法
从优到最差的排列systemconsteq_refrefrangeindexALL null什么都不做 const: 假如user_id 是主键你使用 WHERE user_id 1主键和常量。 eq_ref: 访问类型表示在查询中使用了等值连接并且连接的列在右侧表中是唯一索引查找聚簇索引树返回数据行。
SELECT *
FROM orders
JOIN customers ON orders.customer_id customers.customer_id;ref: 基于非唯一索引进行查找可能返回多个匹配值因此需要通过引用来进行访问。查找聚簇索引树返回数据行。 range: 使用索引进行范围扫描返回一个范围内的行。 index: 查找二级索引树返回聚簇索引值。 ALL: 全表扫描检索表中的所有行这是最慢的访问方式之一。
possible_key没啥用就是可能使用的index但是没使用
key查询使用的索引
key_len:表示了索引键的前缀长度或者是索引键的完整长度
ref:
rows:这个值表示了在执行查询时MySQL 预计需要扫描和检查的行数而不是实际返回的行数。
filtered:
Extra: 覆盖索引的意思就是查询结果可以完全由索引列提供而不需要额外的表访问。 eg.SELECT username FROM users; //username有索引索引列就是结果 Using index: 表示 MySQL 使用了覆盖索引即只使用了索引而没有访问表中的实际行数据。 Using where: 表示 MySQL 在查询中使用了 WHERE 子句中的条件进行筛选而不是在 Using index 标记中的索引中完成筛选。 Using temporary: 表示 MySQL 在执行查询时创建了临时表。 创建使用临时表的情况sort bygroup byjoin子查询 Using filesort: 表示 MySQL 在执行查询时使用了文件排序操作。 filesort:将查询结果写入临时文件中并对临时文件中的数据进行排序操作。 Using join buffer: 表示 MySQL 在执行联接操作时使用了联接缓冲区通常发生在需要对大量数据进行联接时可以提高查询性能。