8.3 充分利用 Explain 和 Profiling
8.3.1 Explain 的使用(1)
说到Explain,肯定很多读者之前已经用过了,MySQL Query Optimizer 通过执行 EXPLAIN 命令来告诉我们它将使用一个怎样的执行计划来优化Query。所以,可以说 Explain 是在优化 Query 时最直接有效地验证我们想法的工具。在本章前面已经谈到,一个好的 SQL Performance Tuner 在动手优化一个 Query 之前,头脑中就应该已经有了一个好的执行计划,后面的优化工作只是为实现该执行计划而作出的各种调整。
在对某个 Query 优化过程中,须要不断地使用 Explain 来验证各种调整是否有效。就像前面很多示例都会通过 Explain 来验证和展示结果一样,所有的 Query 优化都应该充分利用它。
下面看一下在 MySQL Explain功能中展示各种信息的解释。
ID:MySQL Query Optimizer选定的执行计划中查询的序列号。
Select_type:所使用的查询类型,主要有以下这几种查询类型。
DEPENDENT SUBQUERY:子查询内层的第一个SELECT,依赖于外部查询的结果集。
DEPENDENT UNION:子查询中的UNION,且为UNION中从第二个SELECT开始的后面所有SELECT,同样依赖于外部查询的结果集。
PRIMARY:子查询中的最外层查询,注意并不是主键查询。
SIMPLE:除子查询或UNION之外的其他查询。
SUBQUERY:子查询内层查询的第一个SELECT,结果不依赖于外部查询结果集。
UNCACHEABLE SUBQUERY:结果集无法缓存的子查询。
UNION:UNION语句中第二个SELECT开始后面的所有SELECT,第一个SELECT为PRIMARY。
UNION RESULT:UNION 中的合并结果。
Table:显示这一步所访问的数据库中的表的名称。
Type:告诉我们对表使用的访问方式,主要包含如下集中类型。
all:全表扫描。
const:读常量,最多只会有一条记录匹配,由于是常量,实际上只须要读一次。
eq_ref:最多只会有一条匹配结果,一般是通过主键或唯一键索引来访问。
fulltext:进行全文索引检索。
index:全索引扫描。
index_merge:查询中同时使用两个(或更多)索引,然后对索引结果进行合并(merge),再读取表数据。
index_subquery:子查询中的返回结果字段组合是一个索引(或索引组合),但不是一个主键或唯一索引。
rang:索引范围扫描。
ref:Join语句中被驱动表索引引用的查询。
ref_or_null:与ref的唯一区别就是在使用索引引用的查询之外再增加一个空值的查询。
system:系统表,表中只有一行数据;
unique_subquery:子查询中的返回结果字段组合是主键或唯一约束。
Possible_keys:该查询可以利用的索引。如果没有任何索引可以使用,就会显示成null,这项内容对优化索引时的调整非常重要。
Key:MySQL Query Optimizer 从 possible_keys 中所选择使用的索引。
Key_len:被选中使用索引的索引键长度。
Ref:列出是通过常量(const),还是某个表的某个字段(如果是join)来过滤(通过key)的。
Rows:MySQL Query Optimizer 通过系统收集的统计信息估算出来的结果集记录条数。
Extra:查询中每一步实现的额外细节信息,主要会是以下内容。
Distinct:查找distinct 值,当mysql找到了第一条匹配的结果时,将停止该值的查询,转为后面其他值查询。
Full scan on NULL key:子查询中的一种优化方式,主要在遇到无法通过索引访问null值的使用。
Impossible WHERE noticed after reading const tables:MySQL Query Optimizer 通过收集到的统计信息判断出不可能存在结果。
No tables:Query 语句中使用 FROM DUAL或不包含任何 FROM子句。
Not exists:在某些左连接中,MySQL Query Optimizer通过改变原有 Query 的组成而使用的优化方法,可以部分减少数据访问次数。
分享到:
相关推荐
8.3 充分利用Explain和Profiling 8.4 合理设计并利用索引 8.5 Join的实现原理及优化思路 8.6 ORDER BY、GROUP BY和DISTINCT的优化 8.7 小结 第9章 MySQL数据库Schema设计的性能优化 9.0 引言 9.1 高效的模型...
ICP的主要目的是减少数据访问和处理的次数,从而提高查询效率。... **一、概念介绍** ICP(Index Condition Pushdown)简单...在实际应用中,应结合EXPLAIN和PROFILING等工具,对查询进行深入分析,以充分利用ICP的优势。
- **内存管理**:合理配置内存参数,如 `innodb_buffer_pool_size`,以充分利用物理内存。 - **I/O 优化**:考虑使用 RAID 技术来提升磁盘 I/O 性能。 - **并发控制**:合理配置连接数上限和超时设置,防止因连接...
pandas whl安装包,对应各个python版本和系统(具体看资源名字),找准自己对应的下载即可! 下载后解压出来是已.whl为后缀的安装包,进入终端,直接pip install pandas-xxx.whl即可,非常方便。 再也不用担心pip联网下载网络超时,各种安装不成功的问题。
基于java的大学生兼职信息系统答辩PPT.pptx
基于java的乐校园二手书交易管理系统答辩PPT.pptx
tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl
Android Studio Ladybug 2024.2.1(android-studio-2024.2.1.10-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/89954174 part2: https://download.csdn.net/download/weixin_43800734/89954175
有学生和教师两种角色 登录和注册模块 考场信息模块 考试信息模块 点我收藏 功能 监考安排模块 考场类型模块 系统公告模块 个人中心模块: 1、修改个人信息,可以上传图片 2、我的收藏列表 账号管理模块 服务模块 eclipse或者idea 均可以运行 jdk1.8 apache-maven-3.6 mysql5.7及以上 tomcat 8.0及以上版本
tornado-6.1b2-cp38-cp38-macosx_10_9_x86_64.whl
Android Studio Ladybug 2024.2.1(android-studio-2024.2.1.10-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/89954174 part2: https://download.csdn.net/download/weixin_43800734/89954175
matlab
基于java的毕业生就业信息管理系统答辩PPT.pptx
随着高等教育的普及和毕业设计的日益重要,为了方便教师、学生和管理员进行毕业设计的选题和管理,我们开发了这款基于Web的毕业设计选题系统。 该系统主要包括教师管理、院系管理、学生管理等多个模块。在教师管理模块中,管理员可以新增、删除教师信息,并查看教师的详细资料,方便进行教师资源的分配和管理。院系管理模块则允许管理员对各个院系的信息进行管理和维护,确保信息的准确性和完整性。 学生管理模块是系统的核心之一,它提供了学生选题、任务书管理、开题报告管理、开题成绩管理等功能。学生可以在此模块中进行毕业设计的选题,并上传任务书和开题报告,管理员和教师则可以对学生的报告进行审阅和评分。 此外,系统还具备课题分类管理和课题信息管理功能,方便对毕业设计课题进行分类和归档,提高管理效率。在线留言功能则为学生、教师和管理员提供了一个交流互动的平台,可以就毕业设计相关问题进行讨论和解答。 整个系统设计简洁明了,操作便捷,大大提高了毕业设计的选题和管理效率,为高等教育的发展做出了积极贡献。
这个数据集来自世界卫生组织(WHO),包含了2000年至2015年期间193个国家的预期寿命和相关健康因素的数据。它提供了一个全面的视角,用于分析影响全球人口预期寿命的多种因素。数据集涵盖了从婴儿死亡率、GDP、BMI到免疫接种覆盖率等多个维度,为研究者提供了丰富的信息来探索和预测预期寿命。 该数据集的特点在于其跨国家的比较性,使得研究者能够识别出不同国家之间预期寿命的差异,并分析这些差异背后的原因。数据集包含22个特征列和2938行数据,涉及的变量被分为几个大类:免疫相关因素、死亡因素、经济因素和社会因素。这些数据不仅有助于了解全球健康趋势,还可以辅助制定公共卫生政策和社会福利计划。 数据集的处理包括对缺失值的处理、数据类型转换以及去重等步骤,以确保数据的准确性和可靠性。研究者可以使用这个数据集来探索如教育、健康习惯、生活方式等因素如何影响人们的寿命,以及不同国家的经济发展水平如何与预期寿命相关联。此外,数据集还可以用于预测模型的构建,通过回归分析等统计方法来预测预期寿命。 总的来说,这个数据集是研究全球健康和预期寿命变化的宝贵资源,它不仅提供了历史数据,还为未来的研究和政策制
基于微信小程序的高校毕业论文管理系统小程序答辩PPT.pptx
基于java的超市 Pos 收银管理系统答辩PPT.pptx
基于java的网上报名系统答辩PPT.pptx
基于java的网上书城答辩PPT.pptx