怎么看mysql执行计划
时间 : 2023-03-20 04:30:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
MySQL执行计划是指MySQL优化器预估执行某个SQL语句时,会生成一个可执行计划。执行计划是 MySQL 对 SQL 语句执行步骤的计划,包括表的读取方式、数据的查找方式、连接方式、排序方式,以及使用的索引等信息。
可以通过EXPLAIN关键词来查看SQL语句的执行计划,EXPLAIN关键词后接SQL语句。执行EXPLAIN关键字后,MySQL会生成一个执行计划,包含查询要按照什么顺序执行,各个子查询或JOIN之间的数据如何传递,以及如何检索和访问表。
除此之外,EXPLAIN关键字会生成一个结果集,该结果集包含了查询语句的执行计划,以及一些统计信息,例如使用的索引、扫描的行数、扫描速度、排序等信息。
在执行计划中,有一些比较重要的指标:
1. id:查询的编号,每个查询都有唯一的ID。
2. select_type :查询的类型,常见的类型有 SIMPLE、PRIMARY、UNION、UNION RESULT、DERIVED 等。
3. table :查询的表名。
4. type: 查询时的访问方式,常见的访问方式有 ALL(全表扫描)、index(使用索引扫描)、range(索引范围扫描)、ref(使用非唯一索引扫描)、eq_ref(使用唯一索引扫描)和const(使用常量进行比对)等。
5. possible_keys和key: possible_keys 列显示可能用到的索引,key 列显示实际用到的索引。如果没有使用索引,则该列为 NULL。
6. rows: 表示处理查询所需要扫描的行数。
7. Extra: 显示关于查询的描述信息,如果出现“Using filesort”、“Using temporary” 等字样,通常意味着 MySQL 在执行查询时还需要进行额外的工作。
通过对执行计划的分析,可以确定查询是否有优化的余地,例如可以尝试使用索引等优化策略来提高查询的性能。
MySQL执行计划,也叫查询执行计划,是指MySQL优化器在优化查询时所生成的一种分析结果。它可以帮助我们分析SQL查询的优化情况,判断SQL语句的执行效率,找到执行效率低下的SQL语句或语句中存在的问题,更好地优化SQL查询。
MySQL查询执行过程包括以下几个步骤:SQL语句解析、预处理、优化以及执行。在查询执行过程中,MySQL优化器会根据表结构、索引情况、统计信息等信息,生成一种执行计划。执行计划由一棵树形结构组成,叫做查询执行计划树或查询计划加树。每个节点都表示一个执行计划的操作,比如扫描表、使用索引、排序等。
查询执行计划可以通过EXPLAIN语句来获取。EXPLAIN语句可以模拟执行SQL查询,并返回查询执行计划。例如:
EXPLAIN SELECT * FROM `table` WHERE `id`='1';
执行上述SQL语句后,MySQL会返回如下的查询执行计划结果:
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| 1 | SIMPLE | table | const | PRIMARY | PRIMARY | 4 | const | 1 | |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
查询执行计划结果包含以下字段:
- id:执行计划的标识符,用于标识查询中每个SELECT子句的操作序列号。在一个SELECT语句中,同级别的id值相同;子级别的值为父级别的id加“.”再加子级别的序号。
- select_type:SELECT的类型,一般有SIMPLE、PRIMARY、SUBQUERY、DERIVED、UNION等几种类型。
- table:显示该行数据要从哪张表中读取。
- type:访问类型,表示MySQL选择的查找策略。比如:ALL、index、range、ref、eq_ref、const等类型。
- possible_keys:表示MySQL能使用的索引,可用过的索引一般在该列中出现。
- key:表示MySQL实际使用的索引,如果为null,表示没有使用索引或没有使用合适的索引。
- key_len:表示索引字段的长度。
- ref:表示索引的哪一列或常量与表的哪一列进行比较。
- rows:表示MySQL估算使用该帮助读取所需的行数。
- extra:表示其他信息,比如:Using filesort、Using temporary等。
通过分析查询执行计划,我们可以根据MySQL的选择策略和索引情况,进一步优化SQL查询。一些常见的优化问题包括:使用索引查询、避免表扫描、减少join操作、避免多余的排序和分组等。
上一篇
mysql初始化怎么弄
下一篇
mysql怎么做分库分表
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章