Mysql高级篇(中)——SQL性能分析

一、(了解)MySQL Query Optimizer 的主要功能和原理

MySQL Query OptimizerMySQL 用来决定如何高效执行 SQL 查询的核心组件,它会基于查询的逻辑结构、表的统计信息、索引的使用等多种因素来选择最佳的执行计划。理解 Query Optimizer 的工作原理对于提高查询性能非常重要。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、(了解)MySQL 常见瓶颈

MySQL 常见瓶颈 通常分为以下几个方面,涵盖了 硬件资源、数据库配置、查询设计、以及并发处理 等问题。识别和解决这些瓶颈可以显著提高 MySQL 性能。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



总结来说,MySQL 常见瓶颈通常与硬件资源(CPU、内存、磁盘)查询设计(索引、锁、事务)以及数据库配置相关。通过监控、分析执行计划、调整配置和优化查询,可以有效解决这些瓶颈并提升数据库性能。


三、关键字 EXPLAIN

1、是什么

EXPLAIN 关键字是 MySQL 中用于分析查询执行计划的工具帮助开发者了解查询语句是如何被优化器执行的。通过 EXPLAIN,可以 获得关于表的访问顺序索引使用情况连接方式等详细信息,从而有针对性地优化查询。

2、基本语法

EXPLAIN + SQL 语句

  • 执行 EXPLAIN 后,MySQL 会输出一张表,显示查询各个部分的执行计划。这个输出的结果可以帮助理解查询在数据库中的执行路径。

执行计划包含的信息

信息 作用简述
id 标识 查询中每个步骤的顺序
select_type 标识 查询的类型,描述查询是简单查询、联合查询,还是子查询。
table 表示查询中 正在访问的表
partitions 显示查询涉及的表分区(如果
type 描述 MySQL 访问表的方式,反映 查询的效率
possible_keys 列出查询中 可能使用的索引
key 显示实际被优化器选择用于查询的索引
key_len 表示 MySQL 使用的索引长度(单位为字节)
ref 显示 哪个字段或常量与索引列进行比较
rows 优化器估计需要读取的行数
filtered 显示通过 WHERE 子句过滤后的行百分比(0-100%)
Extra 提供关于查询执行的额外信息,特别是某些性能影响因素的提示

在这里插入图片描述

3、EXPLAIN 执行信息详解

(1)id

MySQLEXPLAIN 输出中,id 列用于表示查询的执行步骤和顺序。对于复杂的查询,尤其是涉及多个子查询或联合查询时id 列能够帮助你理解 每个查询部分的执行流程及其依赖关系

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


==通过 `id` 的递增顺序,可以清楚地了解`查询的执行流程`,尤其是在`多表连接、子查询或联合查询`的情况下,帮助确定 `MySQL` 在执行查询时的`实际步骤和顺序`。这对查询优化特别重要,可以`帮助你识别哪些部分的查询是性能瓶颈或需要重构`的。==

(2)select_type

select_type 是帮助理解复杂查询执行方式的重要信息,它 表明每个查询部分的类型,通过分析 select_type,可以识别出查询中的子查询、联合查询、依赖查询等类型,并结合索引和查询优化技术,提升查询性能

select_type值类型 简述
SIMPLE 没有子查询和联合(UNION)的简单查询
PRIMARY 查询中最外层的查询
SUBQUERY 子查询
DERIVED 派生表(即 FROM 子句中的子查询)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值