在mysql中使用explain关键字可以模拟查看数据库是如何执行查询sql查询语句,也就是常说的查看一条sql语句在数据库中的执行计划,下图所示就是执行explain EXPLAIN select * from sys_config; 的执行计划。

查询接口返回字段说明如下解释:
字段 |
说明 |
id |
查询的顺序编号,表示查询中执行的顺序。id 的值越大,执行的优先级越高;如果id 相同,则从上往下执行 |
select_type |
查询类型,常见查询类型如下: SIMPLE:表示简单查询方式。SQL 语句中一般不会不使用UNION和子查询等。 PRIMARY:表示包含子查询的SQL语句的最外层查询语句的查询类型,即当查询中包含子查询时,最外层的查询语句就会显示为 PRIMARY。 UNION:在查询语句中,如果在UNION 关键字之后出现了第二个 SELECT,则被标记为 UNION。 UNION RESULT:表示查询中有多个查询结果集执行 UNION 操作。 DEPENDENT UNION:表示在子查询中存在UNION操作时,从UNION之后的第二个及之后的 SELECT 语句都是DEPENDENT UNION。 DEPENDENT SUBQUERY:子查询中UNION 中第一个 SELECT 查询为DEPENDENT SUBQUERY. SUBQUERY:子查询内层查询的第一个 SELECT DERIVED:在查询语句中,如果from子句的子查询中出现了 union 关键字,则外层 select 查询将被标记为 DERIVED。 MATERIALIZED:表示子查询被物化,物化通过将子查询结果作为一个临时表来加快查询执行速,从而能够使得子查询只执行一次。 UNCACHEABLE SUBQUERY:表示查询结果集无法缓存的子查询,需要逐次查询。
UNCACHEABLE UNION:表示子查询不可被物化,需要逐次运行(即需要执行多次)
|
Table |
查询涉及的表名或者别的表名 |
Type |
表示表连接的类型,包括的类型如下所示。这些类型的性能从高到低的顺序是; null->system->const->eq_ref->ref->fulltext->ref_or_null->index_merge->unique_subquery->index_subquery->range->index->ALL null:表示不访问任何的表。 system:表示中只有一条记录,相当于系统表。一般可以认为是 const 类型的特例。
const:表示主键或者唯一引的常量查询,表中最多只有1行记录符合查询要求。通 const使用到主键或者唯一索引进行定值查询、常量查询,查询的速度非常快。 eq_ref:表示join查询程中,字段使用主键或者唯一索引,出来的行数不止一行。eq_ref是一种查询性能很高的 join 操作。
ref:表示非聚集索引的常量查询。 fulltext:表示查询的过程中,使用了 fulltext 类型的索引。 ref_or_null:跟ref查询类似,在ref的查询基础上会多加一个null值的条件查询。
index_merg:表示索引联合查询。 unique_subquery:表示查询使用主键的子查询。 index_subquery:表示查询使用非聚集索引的子查询。 range:表示查询通过使用索引范围的查询。一般包括:=、、>、>=、 Is NULL、BETWEEN、IN、<=>等范围。
index:表示通过索引进行扫描查询。
ALL:表示全表扫描,性能最差
|
possible_keys |
查询时预计可能会使用的索引。这里说的索引只是可能会用到,实际查询不一定用到 |
key |
实际查询时真实使用的索引 |
key_len |
使用的索引长度 |
ref |
关联信息 |
rows |
查询时扫描的数据记录行数 |
extra |
表示查询特性的使用情况。常用的查询特性如下所示:
Using index:表示使用了索引。 Using index condition:表示使用了索引进行过滤。
Using MRR:表示使用了索引进行内部排序。
Using where:表示使用了 where 条件。
Using temporary:表示使用了临时表。 Using filesort:表示使用文件排序。一般指无法利用索引来完成的排序
|
|
|
以上的内容是从《软件性能测试、分析与调用实践之路》这本书看的,做一下笔记记录。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南