MySQL索引优化分析2——Explain性能分析
上一节讲到Mysql中索引的概述,那数据库执行一条SQL查询语句,其性能除了查询所耗时间这种表现指标之外,有没有什么能够分析SQL查询语句的执行效果的工具?
这里就可以使用Mysql中提供了EXPLAIN关键字。
1. Explain概述
1.1 是什么
Mysql中提供了EXPLAIN关键字,使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是 如何处理你的SQL语句的,从而分析你的查询语句或是表结构的性能瓶颈。
1.2 能干什么:查看执行计划
EXPLAIN语句提供关于SELECT语句执行计划的信息。
EXPLAIN为SELECT语句中使用的每个表返回一行信息。它按照MySQL在处理语句时读取表的顺序列出输出中的表。MySQL使用嵌套循环连接方法解析所有连接。这意味着MySQL从第一个表读取一行,然后在第二个表、第三个表中找到匹配的行,以此类推。当所有表都被处理后,MySQL通过表列表输出所选的列和回溯,直到找到一个有更多匹配行的表为止。从该表读取下一行,然后继续处理下一个表。
根据Explain执行计划可以得出:
- 表的读取顺序
- 哪些索引可以使用
- 数据读取操作的操作类型
- 哪些索引被实际使用
- 表之间的引用
- 每张表有多少行被物理查询
1.3 如何使用
1.Explain执行语法:
Explain SQL语句;
2.Explain语句的执行结果:执行计划

2.执行计划各字段解释
没有排序和分组,则综合看type,key,key_len,rows
有分组和排序时,额外看Extra看是否使用额外排序
Extra中的红色属性
1.id
1.字段含义:
- select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序
2.分为三种情况:
- 1)id相同,执行顺序由上至下

- 2)id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

- 3)id相同和不同
- id如果相同,可以认为是一组,从上往下顺序执行;
- 在所有组中,id值越大,优先级越高,越先执行

3.关注点:
- id号每个号码,表示一趟独立的查询;
- 一个sql 的查询趟数越少越好。
2.select_type
用于表示查询的类型。
1.有哪些


本文详细介绍了MySQL的EXPLAIN关键字及其在分析SQL查询性能中的作用。通过EXPLAIN,我们可以查看执行计划,了解表的读取顺序、索引使用、数据读取操作类型、行数等关键信息,帮助我们优化查询语句和表结构。重点关注的字段有type(访问类型)、key(实际使用的索引)、rows(预计扫描的行数)和Extra(额外信息),以减少filesort和using temporary的使用,提高查询效率。
最低0.47元/天 解锁文章
1607

被折叠的 条评论
为什么被折叠?



