sql 性能优化基于explain调优

news2025/1/31 8:15:38

文章目录

  • Explain分析?
  • 问题描述
  • 解决方案

Explain分析?

关于Explain具体可以干什么,有哪些优缺点,本博主的文章有写到,这是链接地址: 点击这里查看. 下面来说下Explain在项目实战中,如何去进行优化。

问题描述

简单描述一下问题:今天项目经理安排了一个艰巨的任务,xx去优化一下xx那个查询语句,前端列表显示太慢了,影响客户体验,抱着这个问题,我先去查询了一下后端接口,确定了哪个接口下,便找到了SQL语句贴到了下面,在我还没说怎么优化前,大家可以先去看一下

仔细分析一下这段SQL语句先去进行左连接left join,再去进行内连接inner join,经过反复执行,最终确定了问题,出在了inner JOIN sg_device_relevance b ON c.id = b.member_id 注释或者使用left join查询后,问题一:查询出来的数据不对,问题二:查询速度反而比之前更慢了

解决方案

 SELECT c.id,
        c.NAME AS 'name',
        c.sex,
        c.phone,
        c.three_tag,
        c.dept_id,
        c.region,
        c.compliance,
        c.sys_org_code,
        a.measuring_time
        FROM sg_member c
        LEFT JOIN
        sg_blutdruck_record a
        ON c.id = a.member_id AND a.measuring_time BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()
        inner JOIN
        sg_device_relevance b
        ON c.id = b.member_id
        WHERE 1 = 1
				and c.sys_org_code = 'A02A01'
				 AND a.id IS NULL
        GROUP BY c.id

根据上面的SQL,看下我没加索引前的执行结果,查询时间时3秒多,在select前面加上EXPLAIN关键字,分析结果如下,type:代表扫描类型,类型为ALL代表全局扫描,possible_keys:代表应该用到哪些索引,key:代表实际用到的索引, 有些人就开始疑惑了,为什么实际没有用到索引呢,原因是PRIMARY,unique验证唯一值索引,再此处用不上

我这个地方分割一下,继续往下说,一定要讲明白,非常重要这块,不仅在项目中可以用到,面试也常问,不明白的可以私信.

rows:代表检索的数据行数,Extra:代表检索结果,Using index就是用到了索引,很明显这个地方结果返回没有用上,另外type检索类型也是全局检索,type具体有几种类型可以去博文中查询,在本文章上方我贴上文章地址了,这些我都解释完了,下面看下我优化后的查询结果

在这里插入图片描述
优化后

-- 向a表添加索引
 create index device_relevancekey on sg_device_relevance(member_id)
 -- 向B表添加索引
 create index blutdruck_record on sg_blutdruck_record(member_id,measuring_time)

看下这时的type:ref,明显这次没有用全局扫描,C表我没加索引的原因呢是:在此处查询中为主表,看下a和b表,实际用到的索引和应该用到的索引一直,说明用到了索引,Extra:a和b表的扫描结果为Using index,说明索引生效了,查询时间为0.21秒,比刚才快了3秒多注意:这次优化我没有去改SQL,而是加了索引,其实改SQL也可以,但是我这样做呢,其他查询也会同样速度比之前快了很多

本次分享就到这里啦,如果有不明白的地方可以私信本博主,后期会分享更多在项目中遇到的实战技术及问题

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

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

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

相关文章

7年老人,30岁的测试说辞就辞,“人员优化”4个字,泰裤辣...

前几天,一个认识了好几年在大厂做测试的程序员朋友,年近30了,在公司做了7年了,一直兢兢业业,最后还是却被大厂以“人员优化”的名义无情被辞,据他说,有一个月散伙饭都吃了好几顿…… 在很多企业…

【ChatGPT】国内免费使用ChatGPT镜像

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 什么是ChatGPT镜像? 亲测: 一、二狗问答(AI对话) 二、AiDuTu 三、WOChat 四、ChatGPT(个人感觉最好用) 我们可以利用ChatGPT干什么? 一、三分…

薪人薪事 java开发实习一面

目录 1.常用数据结构,区别及使用场景2.数组和链表在内存中数据的分布情况3.HashMap底层数据结构4.put操作5.JVM内存区域6.各个区域存放什么东西7.创建一个对象,内存怎么分配的8.堆中内存怎么划分,gc怎么回收9.IOC 原理10.Bean存放在哪里11.AO…

支付系统设计三:渠道网关设计05-交易持久化

文章目录 前言一、领域模型持久化服务工厂二、聚合创建工厂1. 模型创建1.1 获取域模型Class1.2 新建模型1.3 数据填充 2. 模型持久化2.1 获取域模型对应的仓储2.2 调用域模型仓储进行持久化 总结 前言 本篇将解析交易信息入库,即对上送的参数,在进行校验…

关于ASA广告归因接入方法

投放苹果ASA广告,提高 app 曝光率、下载量的增长,那么我们该如何从后台看到投放广告的效果呢? 我们可以借助Apple Ads归因API。那什么是归因?什么又是API呢? 归因:可以给用户打标签,然后看他在…

[GUET-CTF2019]encrypt 题解

本题是输入了一个字符串&#xff0c;进行了rc4加密&#xff0c;和魔改的base64加密 RC4算法初始化函数 RC4加密过程 魔改的base64加密 最后加密的字符串是byte_602080 我们可以将byte_602080提取出来&#xff0c;下面是提取数据的IDC脚本&#xff0c;得到了密文 #include<…

赫夫曼树和赫夫曼编码详解

目录 何为赫夫曼树&#xff1f; 赫夫曼树算法 赫夫曼编码 编程实现赫夫曼树 编程实现赫夫曼编码 编程实现WPL 总代码及分析 何为赫夫曼树&#xff1f; 树的路径长度&#xff1a;从树根到每一结点的路径长度之和 结点的带权路径长度&#xff1a;从树根到该结点的路径长度…

2023网络安全十大顶级工具

从事网络安全工作&#xff0c;手上自然离不开一些重要的网络安全工具。今天&#xff0c;分享10大网络安全工具。 一、Kali Linux Kali 是一个基于 Debian 的 Linux 发行版。它的目标就是为了简单&#xff1a;在一个实用的工具包里尽可能多的包含渗透和审计工具。Kali 实现了这…

【AI面试】CNN 和 transformer 的问题汇总

​ CNN卷积神经网络和transformer相关的知识&#xff0c;是AI的一个基础的&#xff0c;也是前言的知识点。一般面试官会从以下这些问题入手&#xff1a; 卷积神经网络&#xff0c;有什么特点&#xff1f;1*1卷积核有什么作用&#xff1f;计算经过卷积的输出尺寸大小空洞卷积你…

机器学习之朴素贝叶斯三、拉普拉斯平滑技术、优化改进情感分析

文章目录 一、前文问题1. 先看下改进前我们的代码计算部分2. 问题分析&#xff1a; 二、针对问题进行解决1. 什么是拉普拉斯平滑技术2. 拉普拉斯优化-下溢上溢问题3. 改进地方分析&#xff1a;4.改进优化1.优化一&#xff0c;对条件概率计算进行优化2.优化二&#xff0c;对后延…

从小白到黑客高手:一份全面详细的学习路线指南

前言 黑客从入门到精通需要经过深入的学习和实践&#xff0c;这是一个需要长时间投入和大量精力的过程。在这份学习路线中&#xff0c;我将为你介绍黑客学习的基本知识和技能&#xff0c;帮助你逐步掌握黑客技能。 黑客 一、入门阶段 1.了解计算机基础知识 学习计算机基础知…

红黑树(小白教学)

分享一个动画展示的网址&#xff1a;Red/Black Tree Visualization (lerogo.com) 将红黑树之前&#xff0c;我们先来了解一下什么叫做2-3树&#xff01;&#xff01;&#xff01; 在我们以前学习的过程中&#xff08;二分搜索树、完全二叉树等&#xff09;结点都是存放了一个元…

Auto_GPT:如何使用Auto-GPT、安装、开发

文章目录 前言一、使用前提二、如何在您的 PC 上安装 Auto-GPT第 1 步&#xff1a;安装 Python第 2 步&#xff1a;获取 Auto-GPT 源代码和 OpenAI API 密钥第 3 步&#xff1a;在 Windows、MacOS和 Linux上安装 Auto-GPT 三、如何在你的 PC 上运行Auto-GPT总结 前言 Auto-GPT…

Redis消息队列(1)

一)消息队列:从字面意思上来看是存储消息的队列&#xff0c;最简单的消息队列包含三个元素: 1)消息队列:存储和管理消息&#xff0c;也被称之为是消息代理 2)生产者:发送消息到消息队列 3)消费者:从消息队列中获取消息并处理消息 4)当有用户想要进行秒杀下单的时候&#xff0c;…

CENTO OS上的网络安全工具(二十一)Hadoop HA swarm容器化集群部署

如果使用swarm来构建Hadoop、Spark之类的集群&#xff0c;一个绕不过去的问题每个容器都需要支持SSH免密互联——因为Hadoop需要。这就需要事先准备可以一键进行集群化部署的SSH镜像。 一、SSH集群及镜像的构建 1. 准备更换镜像源的Centos7 由于Centos7已经停止维护&#xff0c…

stm32 iic驱动ds1307实际使用驱动

本文使用的工程代码如下&#xff1a; (1条消息) stm32iic驱动ds1307实际使用驱动&#xff0c;参考博客&#xff1a;资源-CSDN文库 上次我记得写了一个使用开发板测试DS1307的测试例程&#xff0c;DS1307也是使用测试板&#xff0c;后面项目上具体使用了&#xff0c;又优化了驱…

HelloSpring

1.beans.xml配置文件 在resource资源文件夹下创建beans.xml文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

我们的愿景是在个人计算机上实现量子霸权

奥维尔号量子计算机 简介 采用扩展的量子二进制算法。在经典计算机上实现量子计算机。我们的景愿是在个人计算机上实现量子霸权。 此计算机的字长是64位&#xff0c;等效数据位为32位字长的量子计算机。我们采用量子扩展二进制&#xff0c;共有&#xff14;个字符:0,1,Q,P可以…

Redis---主从复制 哨兵

目录 一、主从复制 1、什么是主从复制呢&#xff1f; 2、案例演示 2.1 配置文件 2.2 一主二仆 2.2.1 相关题目&#xff1a; 2.3 薪火相传 & 反客为主 3、复制原理和工作流程 3.1、slave启动&#xff0c;同步清初 3.2 首次连接&#xff0c;全量复制 3.…

【CNN】卷积神经网络(LeNet)是什么?如何实现LeNet?

系列文章目录 第一章 深度学习 CNN中的卷积神经网络&#xff08;LeNet&#xff09; 目录 系列文章目录 文章目录 前言 一、卷积神经网络&#xff08;LeNet&#xff09;是什么&#xff1f; 二、LeNet的网络结构 三、实现LeNet模型 ​​​​ 总结 前言 本文主要是介绍卷…