mysql性能调优:EXPLAIN命令21

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【7月更文挑战第21天】掌握SQL性能调优:深入解析EXPLAIN命令的神奇用法!

sql 语句优化过程中,explain 用于获取查询执行计划(即有关MySQL如何执行查询的说明)。
explain 经常与 SELECT,DELETE,INSERT,REPLACE 和 UPDATE 语句一起使用,用来分析这些 sql 语句的执行计划,当 explain 与可解释的语句一起使用时,MySQL 将显示来自优化器的有关语句执行计划的信息。也就是说,MySQL 解释了它将如何处理该语句。

1、优化器常用优化类型

优化器内部为了找到最优的执行计划,查询优化器会对一些查询进行优化,一般可以优化的sql类型如下:
image.png

2、explain 的用法介绍

explain 的用法非常简单,在你的 sql 语句前加上 explain,点击执行,就可以看到你的 sql 语句的执行计划。

explain select from user where id = 1001;
--为了方便查看,可以在语句后面加一个\G
explain select
from user where id = 1001 \G;
explain 用于获取执行计划信息的信息如下,需要特别关注的内容如下:image.png
3、连接类型 type 的常用值说明

const:表示通过主键或者唯一索引的列与一个常数值进行比较时会使用 const 连接,查询效率最高,比如:
SELECT * FROM table_name WHERE primary_key=1;
eq_ref:表示唯一索引扫描,对于每个索引列在表中只有一条记录与之匹配,查询效率也很高,比如:

SELECT FROM ref_table,other_table
WHERE ref_table.key_column=other_table.column;
ref :表示非唯一索引扫描,也就是说每个索引列在表中不只单条记录与之匹配,也是索引查询,效率也算高;
range:只检索给定范围的记录,也是使用索引来选择行,平常开发中至少要达到 range 的级别,否则需要优化;
SELECT
FROM table_name
WHERE key_column
BETWEEN 10 and 20;
index:索引全表扫描,按索引顺序扫描一遍从而查找数据行,效率较低,除非 Uses index 出现在 Extra列中。
All:全表扫描,遍历全表从而查找数据行,效率最低,一般需要通过添加索引来避免这种情况。
4、附加信息 Extra 的常用值说明
Using filesort:使用了文件进行排序,效率较低
Using index:使用了覆盖索引,效率较高
Using temporary:使用了临时表
Using where:使用了 where 条件

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11天前
|
存储 关系型数据库 MySQL
提高MySQL查询性能的方法有很多
提高MySQL查询性能的方法有很多
64 6
|
11天前
|
存储 关系型数据库 MySQL
提高MySQL的查询性能
提高MySQL的查询性能
35 4
|
11天前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
7天前
|
SQL 关系型数据库 MySQL
MySQL中的 where 1=1会不会影响性能?看完官方文档就悟了!
本文探讨了在Mybatis中使用`where 1=1`进行动态SQL拼接是否会影响性能。通过MySQL官方资料和实际测试表明,`where 1=1`在MySQL 5.7及以上版本中会被优化器优化,因此对性能影响不大。文中详细对比了`where 1=1`与`<where>`标签的使用方法,并建议根据MySQL版本和团队需求选择合适的方式。最后,推荐查找官方资料以确保技术路线正确。
20 4
|
17天前
|
存储 关系型数据库 MySQL
MySQL索引失效及避免策略:优化查询性能的关键
MySQL索引失效及避免策略:优化查询性能的关键
112 3
|
17天前
|
缓存 关系型数据库 MySQL
MySQL数据库优化:提升性能和扩展性的关键技巧
MySQL数据库优化:提升性能和扩展性的关键技巧
53 2
|
23天前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
22 3
|
25天前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
43 4
|
7天前
|
SQL 关系型数据库 MySQL
MySQL EXPLAIN该如何分析?
本文将详细介绍MySQL中`EXPLAIN`关键字的工作原理及结果字段解析,帮助优化查询性能。`EXPLAIN`可显示查询SQL的执行计划,其结果包括`id`、`select_type`、`table`等字段。通过具体示例和优化建议,帮助你理解和应用`EXPLAIN`,提升数据库查询效率。
18 0
|
7天前
|
关系型数据库 MySQL 数据库
Mysql 常用命令
Mysql 常用命令
13 0