sql 性能优化基于explain调优(二)

news2024/11/17 6:37:15

文章目录

  • Explain
  • 问题描述
  • 解决方案

Explain

关于Explain具体怎么用以及有哪些优点,我就不过多的跟大家去讲解了,从我最初的文章: explain是什么?explain优缺点及如何使用explain优化SQL,大家可以点击这个链接看一下,对Explain有个基础的了解,前段时间我发表的博客文章sql 性能优化基于explain调优,讲述的时在实战当中,当我们拿到SQL语句,查询几秒甚至10及秒时,如何进行优化为几毫秒

回到正题,今天这边文章还是围绕使用Explain对SQL的性能调优问题,可见认识到了Explain的重要性了吧,此案例呢为实战案例,也是我在项目中遇到的SQL性能调优问题

问题描述

先来看下需要进行优化的SQL语句

  SELECT
        m.`name` AS memberId_dictText,
        o.type AS type_dictText,
         i.`name` AS taskId_dictText,
        o.number AS number,
        o.create_time AS createTime,
        g.`name` AS goodsId_dictText,
        o.`code`,
        o.is_make AS isMake,
        o.end_time AS endTime
        FROM
        sg_operation_records o
        LEFT JOIN sg_member m ON o.member_id = m.id
         LEFT JOIN sys_user u ON m.doctor_id = u.id
         LEFT JOIN sg_item i ON i.id = o.task_id
         LEFT JOIN sg_goods g ON goods_id = o.goods_id
         AND g.sys_org_code = m.sys_org_code
        WHERE 1 = 1
--             AND o.type = #{recordType}
--                 AND g.is_on_sale = 1
--                 AND g.is_delete = 0
--             AND u.id = #{doctorId}
            AND m.sys_org_code = 'A02A01'
--             AND m.name like  CONCAT('%', #{name},'%')

前端查询时报了一个这样的错误在这里插入图片描述

解决方案

这个错误很明显是前端调用后端,由于长时间没收到后端的回复,超时了,我的解决思路是,打下断点,看看是后端报错了吗,跑了一下程序,后端是没有问题的,然后我的目光转向了XML文件里的SQL,在数据里执行了一下SQL语句,查询时间为2秒多
在这里插入图片描述
回到SQL语句中查看这是一个五个表连接查询的SQL语句,主表为sg_operation_recordssg_operation_records表的外键关联为member_idgoods_id这两列,向这两列添加复合索引

create index key_operation_records on sg_operation_records(member_id,goods_id)

查看及添加索引语法(以复合索引为例)

//添加索引
create index 索引名称 on 表名(列名,列名)
// 查看索引
show index from 表名

此时已经给sg_operation_records表中的这两列加上了复合索引
在这里插入图片描述
再来执行一下SQL语句,3毫秒SQL语句没有变,只是给列加了索引
在这里插入图片描述
总结
在SQL性能调优时,在SQL语句select前面加上Explain关键字,怎么分析,在我本文的开头提到过来,在本博主的上一篇文章中有详细讲解,根据Explain去分析当前SQL语句是否用到索引,有没有导致索引失效等问题,再去向指定列添加索引,就可以了。

本次技术分享到此结束,有不明白或者疑问的博主,可以私信我哦 ~~~

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

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

相关文章

Midjourney基础教程

本教程收集于:AIGC从入门到精通教程 Midjourney基础教程 目录 新手快速入门知识汇总:

Facebook 广告效果越来越差,怎么办?

在如今的数字营销领域中,Facebook作为独立站卖家首选的推广引流平台,具备了许多优势。 一方面,Facebook拥有庞大的用户数量,是全球最大的社交媒体平台之一。另一方面,Facebook的广告算法可以将广告推送给更加精准的受…

创建.Net MAUI工程

下载Visual Studio或Visual Studio for Mac或Rider(收费) Visual Studio for Mac 2022Visual StudioRider 工具推荐 如果使用的是Windows电脑,建议使用Visual Studio 2022并安装ReSharper插件。如果使用的是Mac电脑,建议使用Ri…

【教程】用GraphSAGE和UnsupervisedSampler进行节点表示学习

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 目录 无监督的GraphSAGE 加载 CORA 网络数据 按需采样的无监督GraphSAGE 无监督取样器(UnsupervisedSampler) 提取节点嵌入 节点嵌入的可视化 下游任务 数据拆分 分类器训练 无监…

8.1.0版本ELK搭建,不开启xpack认证机制

8.1.0版本ELK搭建,不开启xpack认证机制 部署环境安排下载安装包服务器环境配置部署elasticsearch部署kibana部署logstash部署httpd,filebeat配置kibana页面 部署环境安排 ip部署服务192.168.0.121kibana,elasticsearch192.168.0.83elasticsearch,logsta…

Spring boot 注解@Async不生效 无效 不起作用

今天在做公司项目时,有一个发邮件的需求。所以写了一个发送邮件的方法后来发现发邮件很慢,导致接口响应也很慢。于是我便想到要使用异步调用去处理这个方法。于是我把注解Async 加到了自己service类下的一个发邮件的一个方法,后来发现并没有生…

Push rejected,用Git修改已提交的注释

问题:有时候因注释与git规定的模板不匹配,会导致远程提交被拒绝 Push rejected 解决:修改不符合规范的注释再push即可 1、打开命令窗口 在项目根目录下右键点击出 Git批处理命令窗口。 2、查看已提交的commit 运行命令:git reba…

dataease源码阅读

源码:https://gitee.com/fit2cloud-feizhiyun/DataEase.git 文件夹目录 1.仪表盘主路由:frontend/src/views/panel |-- penel |-- index.vue |-- panel.js |-- appTemplate | |-- AppTemplateContent.vue | |-- index.vue | |-- component | |-- AppT…

华为OD机试真题 Java 实现【机器人活动区域】【2023Q1 200分】

一、题目描述 现有一个机器人,可放置于 M N的网格中任意位置,每个网格包含一个非负整数编号。当相邻网格的数字编号差值的绝对值小于等于 1 时,机器人可在网格间移动 问题:求机器人可活动的最大范围对应的网格点数目。 说明&a…

ESP32-C2开发板Homekit例程

准备 1.1硬件ESP32 C2开发板,如图1-1所示 图1-1 ESP32 C2开发板 1.2软件 CozyLife APP可以在各大应用市场搜索下载,也可以扫描二维码下载如图1-2所示 HomeKit flash download tool 烧录工具 esp32c2 homkit演示固件 烧录教程 打开flash_download_to…

每日一题161——对角线遍历

给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 1: 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,4,7,5,3,6,8,9] 示例 2: 输入:mat …

【大数据学习篇8】 热门品类Top10分析

在HBase命令行工具中执行“list”命令,查看HBase数据库中的所有数据表。学习目标/Target 掌握热门品类Top10分析实现思路 掌握如何创建Spark连接并读取数据集 掌握利用Spark获取业务数据 掌握利用Spark统计品类的行为类型 掌握利用Spark过滤品类的行为类型 掌握利用…

【嵌入式烧录刷写文件】-1.4-移动Motorola S-record(S19/SREC/mot/SX)中指定地址范围内的数据

案例背景(共5页精讲): 有如下一段S19文件,将源地址范围0x9100-0x9104中数据,移动至一个“空的,未填充的”目标地址范围0xA000-0xA004。 S0110000486578766965772056312E30352EA6 S123910058595A5B5C5D5E5…

调用返回风格

主程序子程序 面向过程 单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序,子程序通常可合成为模块。过程调用作为交互机制,即充当连接件的角色。调用关系具有层次性,其语义逻辑表现为主程序的正确性取…

nodejs微信小程序 vue+uniapp停车场车位管理系统sringboot+python

使用微信小程序进行应用开发,使用My SQL软件搭建数据库,管理后台数据并使用Java语言进行程序设计,借鉴国内现有的停车场管理系统,在他们的基础上进行增减和创新,使用Photoshop完成升降式停车场管理系统的界面部件设计&…

Python学习30:存款买房(C)

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 你刚刚大学毕业,…

龙蜥开发者说:构建软件包?不,是构建开源每一个角落!| 第 20 期

「龙蜥开发者说」第 20 期来了!开发者与开源社区相辅相成,相互成就,这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的,我们希望在这里让更多人看见技术的力量。本期故事,我们邀请了龙蜥社区开发者任博…

JavaWeb-Ajax的学习

Ajax 今日目标: 能够使用 axios 发送 ajax 请求熟悉 json 格式,并能使用 Fastjson 完成 java 对象和 json 串的相互转换使用 axios json 完成综合案例 概述 AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。 我们先来…

LED显示屏的部件组成

LED显示屏通常由以下几个主要部件组成: LED模块:LED模块是构成LED显示屏的基本单元,包含多个LED发光元件以及相应的电路和连接器。LED模块通常以方形或长方形的形式存在,可以根据需要组合成各种尺寸和形状的显示屏。免费送你Led模…

【2023秋招】华为od-4.14三道题思路题解

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&…