MySQL的查询计划(EXPLAIN)

核心关注指标

在MySQL的查询计划(EXPLAIN)中,可以查看以下一些重要的指标来评估查询性能和索引使用情况:

type:表示查询的访问类型,可以是常见的取值如"ref"、"eq_ref"、"range"、"index"等。这个指标表示了MySQL选择了哪种查询执行方式,可以帮助判断查询是否使用了合适的索引。

key:表示查询使用的索引,如果该值为NULL,则表示查询没有使用索引,可能需要考虑优化查询或者添加适当的索引。

rows:表示查询扫描的行数,即预计会读取的行数。这个指标可以帮助估计查询的开销和性能。

Extra:包含一些额外的信息,如是否使用了临时表、是否进行了文件排序、是否进行了优化等。

key_len:表示索引中使用的字节数,可以通过这个值来判断索引的长度和使用情况。

possible_keys:表示可能使用的索引列表,可以帮助判断是否存在合适的索引供查询使用。

filtered:表示查询结果经过过滤后的行占比,这个值越接近1,表示查询结果经过索引过滤的效果越好。

这些指标可以帮助分析查询的执行计划,判断索引是否被充分利用,评估查询的性能和优化查询的可能性。需要注意的是,不同的查询和数据库环境可能会有不同的指标和含义,因此在使用EXPLAIN结果进行优化时,应结合具体情况进行分析。

全部指标

指标含义
type查询的访问类型
key查询使用的索引
rows预计读取的行数
Extra包含额外的信息,如是否使用临时表、文件排序、优化等
key_len索引使用的字节数
possible_keys可能使用的索引列表
filtered经过过滤后的行占比
select_typeSELECT操作的类型,如SIMPLE、PRIMARY、DERIVED等
table查询涉及的表
partitions分区数目
ref使用的连接条件
using_index是否使用了覆盖索引
using_where是否使用了WHERE子句的过滤条件
using_join_buffer是否使用了连接缓冲区
using_temporary是否使用了临时表
using_filesort是否使用了文件排序
note提供一些额外的注释和信息

指标详情

以下是进一步详细解释的MySQL查询计划(EXPLAIN)中的指标及其含义:

  1. type:表示查询的访问类型。常见的取值包括:

    • system:表示单行查询,只能返回一行结果。
    • const:表示通过使用主键或唯一索引的常量条件进行查询,只能返回一行结果。
    • eq_ref:表示通过使用唯一索引进行等值连接查询,对于每个索引键值只匹配一行结果。
    • ref:表示使用非唯一索引进行查询,对于每个索引键值可能匹配多行结果。
    • range:表示使用索引范围条件进行查询,返回一个范围内的行。
    • index:表示全索引扫描,扫描整个索引树。
    • all:表示全表扫描,扫描整个表。
  2. key:表示查询使用的索引。如果该值为NULL,则表示查询没有使用索引,可能需要考虑优化查询或者添加适当的索引。

  3. rows:表示预计读取的行数。这个指标可以帮助估计查询的开销和性能。

  4. Extra:包含了一些额外的信息,如:

    • Using index:表示查询使用了覆盖索引。
    • Using temporary:表示查询需要使用临时表来处理结果集。
    • Using filesort:表示查询需要使用文件排序来处理结果集。
    • Using join buffer:表示查询使用了连接缓冲区。
    • Using where:表示查询使用了WHERE子句的过滤条件。
    • Note:提供一些额外的注释和信息。
  5. key_len:表示索引使用的字节数。这个值可以帮助判断索引的长度和使用情况。

  6. possible_keys:表示可能使用的索引列表。这个指标可以帮助判断是否存在合适的索引供查询使用。

  7. filtered:表示经过过滤后的行占比。这个值越接近1,表示查询结果经过索引过滤的效果越好。

  8. select_type:表示SELECT操作的类型,如SIMPLE、PRIMARY、DERIVED等。这个指标可以帮助了解查询的复杂性和优化情况。

  9. table:表示查询涉及的表。可以查看表的顺序,了解查询的连接顺序和操作。

  10. partitions:表示分区数目。如果表是分区表,则可以看到查询涉及的分区数。

其他

除了EXPLAIN之外,MySQL还提供了其他一些SQL优化相关的指令和工具,包括:

  1. ANALYZE TABLE:用于分析和更新表的统计信息,以帮助优化查询执行计划。
  2. OPTIMIZE TABLE:用于优化表的物理存储结构,以提高查询性能。
  3. SHOW INDEX:显示表的索引信息,包括索引名称、字段、唯一性等。
  4. SHOW CREATE TABLE:显示创建表的SQL语句,包括表的结构、索引等信息。
  5. SHOW TABLE STATUS:显示关于表的详细信息,包括行数、大小、碎片化等。
  6. SHOW VARIABLES:显示MySQL服务器的变量设置,包括缓存大小、连接数等配置参数。
  7. SET optimizer_switch='...':通过设置优化器开关,可以改变优化器的行为,以调整查询的执行计划。
  8. MySQL Workbench:MySQL官方提供的可视化工具,可以使用查询优化器分析器来检查查询的性能问题和优化建议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python+requests+unittest执行自动化接口测试!

1、安装requests、xlrd、json、unittest库 <1>pip 命令安装&#xff1a; pip install requests pip install xlrd pip install json pip install unittest <2> pycharm里安装 2、利用Page Object Model 设计理念创建六类Python Package(也可根据项目要求具体实施…

企业安全—DevSecOps概述详情

0x00 前言 SDL存在的问题在于体量过于庞大&#xff0c;不利于快速进行适配和进行&#xff0c;所以就有了DevSecOps&#xff0c;实际上是因为敏捷开发也就是DevOps的推进&#xff0c;并且坐上了云服务模式的火车&#xff0c;所以这一系列的东西都开始普及。DevSecOps作为DevOps…

vue3项目报错The template root requires exactly one element.eslint-plugin-vue

解决方案&#xff1a; 1.禁用 Vetur 并改用Volar》它现在是 Vue 3 项目的官方推荐。【必须重启vsCode】 从官方迁移指南&#xff1a; 建议使用带有我们官方扩展 Volar (opens new window) 的 VSCode&#xff0c;它为 Vue 3 提供了全面的 IDE 支持。 2.package.json文件中 &…

什么是蓝桥杯?什么是蓝桥STEMA考试?

第十五届蓝桥大赛赛事安排? STEMA考试11月(考试时间11月26日) STEMA考试1月(2024年1月) STEMA考试3月(2024年3月) 第十五届蓝桥杯省赛(2024年4月待定) 第十五届蓝桥杯国赛(2024年5月待定) 注:以上时间具体以组委会官方发布为准。 01.蓝桥杯 蓝桥杯全国软件和…

linux java 启动脚本

#!/bin/sh## java env #export JAVA_HOME/data/jdk1.8.0_121 #export JRE_HOME$JAVA_HOME/jre## service name #当前目录 SERVICE_DIR$(cd dirname $0; pwd) echo "$SERVICE_DIR" #jar包路径 JAR_DIRls -ltr $SERVICE_DIR/*.jar| tail -1 echo "JAR_DIR $JAR_DI…

强化学习------PPO算法

目录 简介一、PPO原理1、由On-policy 转化为Off-policy2、Importance Sampling&#xff08;重要性采样&#xff09;3、off-policy下的梯度公式推导 二、PPO算法两种形式1、PPO-Penalty2、PPO-Clip 三、PPO算法实战四、参考 简介 PPO 算法之所以被提出&#xff0c;根本原因在于…

#力扣:2315. 统计星号@FDDLC

2315. 统计星号 - 力扣&#xff08;LeetCode&#xff09; 一、Java class Solution {public int countAsterisks(String s) {int cnt 0;boolean flag true;for(char c: s.toCharArray()) {if(c |) flag !flag;else if(c * && flag) cnt;}return cnt;} }

什么是可重入,什么是可重入锁? 它用来解决什么问题?

可重入 可重入是多线程并发编程里面一个比较重要的概念&#xff0c;简单来说&#xff0c;就是在运行的某个函数或者代码&#xff0c;因为抢占资源或者中断等原因导致函数或者代码的运行中断&#xff0c;等待中断程序执行结束后&#xff0c;重新进入到这个函数或者代码中运行&am…

Python----break关键字对while...else结构的影响

案例&#xff1a; 女朋友生气&#xff0c;要求道歉5遍&#xff1a;老婆大人&#xff0c;我错了。道歉到第三遍的时候&#xff0c;媳妇埋怨这一遍说的不真诚&#xff0c;是不是就是要退出循环了&#xff1f;这个退出有两种可能性&#xff1a; ① 更生气&#xff0c;不打算原谅…

【Qt之QSetting】介绍及使用

概述 QSettings类提供了一种持久的、与平台无关的应用程序设置存储功能。 用户通常期望一个应用能在不同会话中记住其设置&#xff08;窗口大小和位置&#xff0c;选项等&#xff09;。在Windows上&#xff0c;这些信息通常存储在系统注册表中&#xff1b;在macOS和iOS上&…

Jenkins自动化测试

学习 Jenkins 自动化测试的系列文章 Robot Framework 概念Robot Framework 安装Pycharm Robot Framework 环境搭建Robot Framework 介绍Jenkins 自动化测试 1. Robot Framework 概念 Robot Framework是一个基于Python的&#xff0c;可扩展的关键字驱动的自动化测试框架。 它…

修复VS2015没有代码提示的问题【已解决】

问题描述 在Visual Studio 中编写代码时&#xff0c;发现使用库函数的时候&#xff0c;在类对象后输入点后&#xff0c;并没有出现类对应的成员信息的提示。 解决过程 1&#xff09;方法1&#xff1a; 百度“vs 没有代码提示”&#xff0c;搜索解决方案。 方案1&#xff1…

lossBN

still tips for learning classification and regression关于softmax的引入和作用分类问题损失函数 - MSE & Cross-entropy⭐Batch Normalization&#xff08;BN&#xff09;⭐想法&#xff1a;直接改error surface的landscape&#xff0c;把山铲平feature normalization那…

Hive分区表和分桶表

1.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大。 分区为 HDFS 上表目录的子目录,数据按照分区存储在子目录中。如果查询的 `where` 字句的中包含分区条件,则直接从该分区去查找,而不是扫描整…

python实现PDF表格与文本分别导出EXCEL

现需将pdf 转换至Excel &#xff0c; 目前实现方式&#xff1a;将PDF的TABLE部分与 非 TABLE部分分别导出至Excel两个sheet中 1&#xff09;、识别PDF中的表格块 2&#xff09;、将PDF转换为Word格式 3&#xff09;、提取Word中非表格的文本数据 4&#xff09;、对文本与表格重…

Qt 实现侧边栏滑出菜单效果

1.效果图 2.实现原理 这里做了两个widget&#xff0c;一个是 展示底图widget&#xff0c;一个是 展示动画widget。 这两个widget需要重合。动画widget需要设置属性叠加到底图widget上面&#xff0c;设置如下属性&#xff1a; setWindowFlags(Qt::FramelessWindowHint | Qt::…

Java提升技术,进阶为高级开发和架构师的路线

原文网址&#xff1a;Java提升技术&#xff0c;进阶为高级开发和架构师的路线-CSDN博客 简介 Java怎样提升技术&#xff1f;怎样进阶为高级开发和架构师&#xff1f;本文介绍靠谱的成长路线。 首先点明&#xff0c;只写业务代码是无法成长技术的。提升技术的两个方法是&…

【Docker】Docker-Compose内置DNS负载均衡失效问题

Docker Compose实现负载均衡 还是对前面的例子docker-compose.yml稍微修改&#xff1a; version: "3.8"services:flask-demo:build:context: .dockerfile: Dockerfileimage: flask-demo:latestenvironment:- REDIS_HOSTredis-server- REDIS_PASS${REDIS_PASS}healt…

软考-入侵检测技术原理与应用

本文为作者学习文章&#xff0c;按作者习惯写成&#xff0c;如有错误或需要追加内容请留言&#xff08;不喜勿喷&#xff09; 本文为追加文章&#xff0c;后期慢慢追加 by 2023年10月 入侵检测技术概念 入侵检测技术是指一种计算机安全技术&#xff0c;旨在监测计算机系统、…

回溯法:雀魂启动!

题目链接&#xff1a;雀魂启动&#xff01;_牛客题霸_牛客网 题解&#xff1a; 回溯法 1、用哈希思想构建映射表&#xff0c;标记已有的卡的种类和个数 2、遍历卡池&#xff0c;先从卡池中抽一张卡&#xff0c;因为只能抽一张卡&#xff0c;所以一种卡只判断一次 3、抽到卡后找…