当前位置: 首页 > news >正文

EXPLAIN使用分析

系列文章目录


文章目录

  • 系列文章目录
  • 一、type说明
  • 二、MySQL中使用Show Profile
    • 1.查看当前profiling配置
    • 2.在会话级别修改profiling配置
    • 3.查看profile记录
    • 4.要深入查看某条查询执行时间的分布


一、type说明

在这里插入图片描述
我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引:
type结果值从好到坏依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

all:全表扫描

index:另一种形式的全表扫描,只不过他的扫描方式是按照索引的顺序

range:有范围的索引扫描,相对于index的全表扫描,他有范围限制,因此要优于index

ref: 查找条件列使用了索引而且不为主键和unique。其实,意思就是虽然使用了索引,但该索引列的值并不唯一,有重复。这样即使使用索引快速查找到了第一条数据,仍然不能停止,要进行目标值附近的小范围扫描。但它的好处是它并不需要扫全表,因为索引是有序的,即便有重复值,也是在一个非常小的范围内扫描。

const:通常情况下,如果将一个主键放置到where后面作为条件查询,mysql优化器就能把这次查询优化转化为一个常量。至于如何转化以及何时转化,这个取决于优化器

一般来说,得保证查询至少达到range级别,最好能达到ref,type出现index和all时,表示走的是全表扫描没有走索引,效率低下,这时需要对sql进行调优。

当extra出现Using filesor或Using temproary时,表示无法使用索引,必须尽快做优化。

possible_keys:sql所用到的索引

key:显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL

rows: 显示MySQL认为它执行查询时必须检查的行数。

这里可以参考之前写的一篇:用MySQL 执行计划分析 DATE_FORMAT 函数对索引的影响

二、MySQL中使用Show Profile

Show profile 默认是禁用的,用处是记录在服务器中运行的查询耗费的时间和其他一些查询执行状态变更相关的数据。

1.查看当前profiling配置

show variables like ‘profiling%’

2.在会话级别修改profiling配置

set profiling =1

我在执行这个语句是,返回给我

0 row(s) affected, 1 warning(s): 1287 ‘@@profiling’ is deprecated and will be removed in a future release.

看这个提示,似乎后期的版本profiling会有变动

3.查看profile记录

show profiles

当一条查询提交给服务器时,此工具会记录剖析信息到一张临时表,并为每个查询赋予一个从1开始的整数标识符。

4.要深入查看某条查询执行时间的分布

show profile for query <整数标识符>

相关文章:

EXPLAIN使用分析

系列文章目录 文章目录 系列文章目录一、type说明二、MySQL中使用Show Profile1.查看当前profiling配置2.在会话级别修改profiling配置3.查看profile记录4.要深入查看某条查询执行时间的分布 一、type说明 我们只需要注意一个最重要的type 的信息很明显的提现是否用到索引&…...

布局性能优化:安卓开发者不可错过的性能优化技巧

作者&#xff1a;麦客奥德彪 当我们开发Android应用时&#xff0c;布局性能优化是一个必不可少的过程。一个高效的布局能够提高用户体验&#xff0c;使应用更加流畅、响应更加迅速&#xff0c;而低效的布局则会导致应用的运行变得缓慢&#xff0c;甚至出现卡顿、崩溃等问题&…...

Python 中的机器学习简介:多项式回归

一、说明 多项式回归可以识别自变量和因变量之间的非线性关系。本文是关于回归、梯度下降和 MSE 系列文章的第三篇。前面的文章介绍了简单线性回归、回归的正态方程和多元线性回归。 二、多项式回归 多项式回归用于最适合曲线拟合的复杂数据。它可以被视为多元线性回归的子集。…...

docker 容器中执行命令出现错误: 13: Permission denied

错误 13: Permission denied [rootVM-32-11-tencentos ~]# docker exec -it kibana1 /bin/bash kibana76c20c215dcb:~$ apt-get install vi E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied) E: Unable to acquire the dpkg frontend…...

JavaWeb学习|JavaBean;MVC三层架构;Filter;Listener

1.JavaBean 实体类 JavaBean有特定的写法: 必须要有一个无参构造 属性必须私有化。 必须有对应的get/set方法 用来和数据库的字段做映射 ORM; ORM:对象关系映射 表--->类 字段-->属性 行记录---->对象 2.<jsp&#xff1a;useBean 标签 3. MVC三层架构 4. Filter …...

arx 外部参照文件(XREF)的添加、删除、卸载和重载_objectarx

添加参照 CString strFileName;int nIndex = strFilePath.ReverseFind(\\);if (nIndex != -1){strFileName = strFilePath.Right(strFilePath....

【博客699】docker daemon预置iptables剖析

docker daemon预置iptables剖析 没有安装docker的机器&#xff1a;iptables为空&#xff0c;且每个链路的默认policy均为ACCEPT [root~]# iptables-save[root ~]# iptables -t raw -nvL Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt …...

Golang 中的交叉编译详解

Golang 中的交叉编译 在 Golang 中&#xff0c;交叉编译指的是在同一台机器上生成针对不同操作系统或硬件架构的二进制文件。这在开发跨平台应用或构建特定平台的发布版本时非常有用。 交叉编译 Golang 程序的基本步骤如下&#xff1a; 指定目标操作系统和工具链并设置对应的…...

Python中的诡异事:不可见字符!

文章目录 前言1. 起因2. 调查3. 高能4. 释惑 前言 今天分享一件很诡异的事情&#xff0c;我写代码的时候遇到了不可见的字符&#xff01;&#xff01;&#xff01; 1. 起因 今天在使用pipreqs导出项目中所依赖的库时突然报错了&#xff1a; pipreqs . --encodingutf-8 --forc…...

【uniapp】uniapp使用微信开发者工具制作骨架屏:

文章目录 一、效果&#xff1a;二、过程&#xff1a; 一、效果&#xff1a; 二、过程&#xff1a; 【1】微信开发者工具打开项目&#xff0c;生成骨架屏&#xff0c;将wxml改造为vue页面组件&#xff0c;并放入样式 【2】页面使用骨架屏组件 【3】改造骨架屏&#xff08;去除…...

【UE4 RTS】06-Camera Edge Scroll

前言 本篇实现的效果是当玩家将鼠标移至屏幕边缘时&#xff0c;视野会相应的上下左右移动 效果 步骤 1. 打开玩家控制器“RTS_PlayerController_BP”&#xff0c;在类默认值中设置如下选项 新建一个宏&#xff0c;命名为“EdgeSroll”&#xff0c; 添加两个输入和三个输出&a…...

无涯教程-Perl - length函数

描述 此函数返回EXPR值的长度(以字符为单位),如果未指定,则返回$_。如果要确定相应的大小,请在数组或哈希上使用标量context。 语法 以下是此函数的简单语法- length EXPRlength返回值 此函数返回字符串的大小。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl$o…...

怎样在 CentOS 里下载 RPM 包及其所有依赖包

前几天我尝试去创建一个仅包含我们经常在 CentOS 7 下使用的软件的本地仓库。当然,我们可以使用 curl 或者 wget 下载任何软件包,然而这些命令并不能下载要求的依赖软件包。你必须去花一些时间而且手动的去寻找和下载被安装的软件所依赖的软件包。然而,我们并不是必须这样。…...

在Ubuntu上使用NFS挂载

假设要把192.16.2.101服务器上的 /home/sharedata 挂载到192.16.2.102服务器上的 /home/receive_data 一、服务端 1、安装NFS服务端 sudo apt-get install nfs-kernel-server 2、修改NFS挂载配置文件 sudo vim /etc/exports 在文件中输入 /home/sharedata 192.16.2.102(…...

复现海康威视综合安防管理平台artemis接口Spring boot heapdump内存泄露漏洞

目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现 一、漏洞描述 HIKVISION iSecure Center综合安防管理平台是一套“集成化”、“智能化”的平台,通过接入视频监控、一卡通...

哈希unordered系列介绍(上)

一.Unordered_map,Unordered_set介绍 在之前我们已经介绍过set,map,multiset等等关联式容器&#xff0c;它们的底层是红黑树进行模拟实现的&#xff0c;在查询时效率可达到 l o g 2 N log_2 N log2​N&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点…...

MySQL随心记第二篇

一、正则表达式篇&#xff1a; regular expression--> regexp 元字符: . : 单个的任意字符&#xff08;默认不包含换行&#xff09; \d:数字: 0-9 补集:\D \w:ascil:数字&#xff0c;大写字母&#xff0c;小写字母&#xff0c;以及下划线 unicode: 数字&#xff0c;大…...

0001nginx简介、相关模型与原理

文章目录 一. 什么是Nginx二. ngnix的一些模型1、nginx的进程模型2、worker的抢占&#xff08;锁&#xff09;机制模型3. nginx事件处理模型 三. nginx加载静态资源的过程 一. 什么是Nginx Nginx是一个高性能HTTP反向代理服务器&#xff0c;以下是nginx的相关能力 反向代理&am…...

elasticsearch简单入门语法

基本操作 创建不同的分词器 ik_smart&#xff1a; 极简分词 &#xff1b; ik_max_word: 最细力再度分词 基本的rest命令 methodurl地址描述PUTlocalhost:9200/索引名称/类型名称/文档id创建文档&#xff08;指定文档id&#xff09;POSTlocalhost:9200/索引名称/类型名称创建文…...

Python自动化测试用例:如何优雅的完成Json格式数据断言

目录 前言 直接使用 优化 封装 小结 进阶 总结 资料获取方法 前言 记录Json断言在工作中的应用进阶。 直接使用 很早以前写过一篇博客&#xff0c;记录当时获取一个多级json中指定key的数据&#xff1a; #! /usr/bin/python # coding:utf-8 """ aut…...

1688商品详情API应用之无货源铺货 SAAS:合规采集、多平台一键上架、SKU / 库存 / 价格自动同步

1688商品详情接口&#xff1a;item_get&#xff0c;item_get_pro通过商品id获取商品详情信息&#xff0c;包括商品标题、价格、url&#xff0c;商品主图、详情图&#xff0c;sku信息等。公共参数名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#…...

【实测避坑】英文论文降AI率保姆级评测:如何保住专业词汇与完美排版?

毕业疯狂赶稿的痛苦&#xff0c;熬过夜敲过键盘的都懂。 好不容易拼凑出一篇英文初稿&#xff0c;读起来却有一股浓浓的AI味&#xff0c;不仅语感生硬&#xff0c;还容易被打回重修。群里每天都有人焦虑地寻找靠谱的英文降ai率工具。 作为去年刚从泥潭里爬出来的学姐&#xf…...

COMSOL单相变压器三维温度场模型:揭秘热点温度与流体流速分布

comsol单相变压器温度场三维模型&#xff0c;可以得到变压器热点温度&#xff0c;流体流速分布 搞变压器温度场仿真最头疼的就是三维流固耦合。去年做配电变压器温升项目时&#xff0c;硬是跟COMSOL死磕了两周才摸到门道。今天给大家分享下怎么用非等温流接口抓取热点温度和油…...

华为交换机安全加固必做项:手把手教你配置CPU防攻击,防住OSPF/BGP协议泛洪

华为交换机CPU防攻击实战指南&#xff1a;从协议泛洪防护到安全架构设计 在网络安全攻防对抗日益激烈的今天&#xff0c;核心网络设备的CPU资源已成为攻击者的重点目标。一次成功的协议泛洪攻击可能导致交换机CPU过载&#xff0c;进而引发路由震荡、管理通道中断甚至全网瘫痪。…...

告别手动标注!用CloudCompare的CANUPO插件,5分钟搞定点云自动分类(附最新.prm文件获取指南)

5分钟解锁点云智能分类&#xff1a;CloudCompare CANUPO插件实战指南 激光雷达点云数据分类一直是三维建模领域的痛点——传统手动标注方式不仅耗时费力&#xff0c;而且结果往往受主观因素影响。想象一下&#xff0c;面对数百万个无序点云&#xff0c;如何快速区分地面、植被…...

麒麟V10离线环境生存指南:如何正确下载并安装Ubuntu deb包(附国内镜像源地址)

麒麟V10离线环境高效运维实战&#xff1a;deb包管理与镜像源深度解析 在政企级IT基础设施中&#xff0c;麒麟操作系统V10凭借其安全稳定的特性已成为关键业务系统的首选。但受限于特殊网络环境&#xff0c;许多运维人员常陷入"无外网如何安装软件"的困境。本文将系统…...

别再只会用浏览器调试了!手把手教你用Wireshark抓取并解密WebSocket实时聊天数据

从乱码到明文&#xff1a;用Wireshark解密WebSocket聊天数据的实战指南 当你盯着屏幕上那些看似毫无规律的十六进制数据流时&#xff0c;是否曾好奇过这些数字背后隐藏的真实对话内容&#xff1f;作为开发者&#xff0c;我们每天都在与WebSocket打交道&#xff0c;但大多数人只…...

CANET-2E-U开发板透明socket开发实战:5分钟搞定CAN总线数据收发

CANET-2E-U开发板透明socket开发实战&#xff1a;5分钟搞定CAN总线数据收发 在工业自动化领域&#xff0c;CAN总线因其高可靠性和实时性成为设备通信的首选方案。但传统CAN开发往往需要复杂的驱动和专用API&#xff0c;让不少工程师望而却步。周立功推出的CANET-2E-U开发板通过…...

从“Hello World”到控制硬件:用汇编语言点亮你的第一个LED灯(基于8086模拟器)

从“Hello World”到控制硬件&#xff1a;用汇编语言点亮你的第一个LED灯&#xff08;基于8086模拟器&#xff09; 当你在屏幕上打印出第一个"Hello World"时&#xff0c;那种成就感可能还停留在抽象的字符层面。但当你用汇编语言直接控制硬件&#xff0c;看到LED灯随…...

从扑克牌到算法:用C++ std::shuffle实现一个公平的在线抽奖系统(附完整代码)

从扑克牌到算法&#xff1a;用C std::shuffle实现一个公平的在线抽奖系统&#xff08;附完整代码&#xff09; 想象一下这样的场景&#xff1a;一场电商直播中&#xff0c;主播宣布"现在开始抽奖&#xff01;"——屏幕瞬间被弹幕淹没&#xff0c;而系统需要在毫秒级响…...