mysql 慢查询调优实战

目录

  • 异常现象:
  • 进行复现:
  • 寻找原因:
  • 解决办法:
    • 办法一:指定执行索引
    • 办法二:先按二级索引里字段排序,再按id排序
    • 办法三:取消排序
  • 最终方案:
  • 复盘:

异常现象:

报错慢查询
原sql:

select id, infoid, orderid, utel, stel, refusetime, reasoncd, reason, deleteflag, params, cityid, paidanid, cateid, baojieworkertype, `operator`, refusesource, utel_encrypt, stel_encrypt 
from t_app_refusereason 
WHERE ( cityid = 18 and refusetime >= '2024-01-22 00:00:00' and refusetime <= '2024-01-23 00:00:00' and reasoncd in ( 38 , 52 , 51 , 10 , 9 ) and deleteflag = 1 ) 
order by id asc 
LIMIT 50;

索引信息:

 KEY `idx_refusetime_reasoncd_deleteflag_cityid` (`refusetime`,`reasoncd`,`deleteflag`,`cityid`) USING BTREE

进行复现:

发现确实特别慢
在这里插入图片描述

解析sql,发现走的是主键索引
在这里插入图片描述
在上线之前校验过,是可以走索引的,可能由于最近数据量的变化,mysql的优化策略变更导致不走二级索引量
在这里插入图片描述

寻找原因:

在 MySQL 中,当执行带有 ORDER BY 子句的查询时,数据库引擎可能会选择不使用二级索引而进行全表扫描。
这是因为在包含排序的情况下,数据库引擎可能认为通过覆盖索引并不会带来额外的性能提升,而直接进行全表扫描可能更为高效。

解决办法:

办法一:指定执行索引

SELECT id, infoid, orderid, utel, stel, refusetime, reasoncd, reason, deleteflag, params, cityid, paidanid, cateid, baojieworkertype, `operator`, refusesource, utel_encrypt, stel_encrypt 
FROM t_app_refusereason 
FORCE INDEX (idx_refusetime_reasoncd_deleteflag_cityid) 
WHERE (cityid = 18 AND refusetime >= '2024-01-22 00:00:00' AND refusetime <= '2024-01-23 00:00:00' AND reasoncd IN (38, 52, 51, 10, 9) AND deleteflag = 1) 
ORDER BY id ASC 
LIMIT 50;

办法二:先按二级索引里字段排序,再按id排序

SELECT id,infoid,orderid,utel,stel,refusetime,reasoncd,reason,deleteflag,params,cityid,paidanid,cateid,baojieworkertype,`operator`,refusesource,utel_encrypt,stel_encrypt 
FROM t_app_refusereason 
WHERE ( cityid = 18 AND refusetime >= '2024-01-22 00:00:00' AND refusetime <= '2024-01-23 00:00:00' AND reasoncd IN ( 38, 52, 51, 10, 9 ) AND deleteflag = 1 ) 
ORDER BY refusetime ASC ,id ASC 
LIMIT 50;

办法三:取消排序

SELECT id,infoid,orderid,utel,stel,refusetime,reasoncd,reason,deleteflag,params,cityid,paidanid,cateid,baojieworkertype,`operator`,refusesource,utel_encrypt,stel_encrypt 
FROM t_app_refusereason 
WHERE ( cityid = 18 AND refusetime >= '2024-01-22 00:00:00' AND refusetime <= '2024-01-23 00:00:00' AND reasoncd IN ( 38, 52, 51, 10, 9 ) AND deleteflag = 1 ) 
LIMIT 50;

原sql、方案一、方案二、方案三
在这里插入图片描述

最终方案:

最终选择办法三,取消排序

复盘:

为什么之前要排序?

之前遇到一种场景,在查询es时没有排序,在返回结果的边界时会出现乱序。比如分页50条查询,数据A和B都符合筛选条件,查第一页的时候数据A返回在第50条,查第二页的时候第一条希望返回数据B,结果返回的还是数据A

因为es获取数据是在不同片区拿数据,如果不指定排序字段会出现不稳定排序现象。

但是mysql索引是稳定的,所以无特殊排序要求的时候直接拿就可以了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue的校园赛事资讯网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

搜维尔科技:【简报】元宇宙数字人赛道,优秀作品《星云时报》赏析

AI 对人们来说是一种新产业&#xff0c;而人们对于它未来会面临的议题仍有许多疑虑&#xff0c;因此我们用新闻报导的方式列举一些有趣且具有可能性的标题&#xff0c;希望能让 大家了解 AI 在未来可能会带来什么问题&#xff0c;以及我们应该采取的态度。 学校&#xff1a; 新…

C++(17)——list的模拟实现

前面的文章中&#xff0c;介绍了&#xff0c;的模拟实现&#xff0c;本篇文章将介绍对于的模拟实现。 目录 1. list的基本结构&#xff1a; 2. list功能实现&#xff1a;尾部插入元素&#xff1a; 3. list迭代器的实现&#xff1a; 4. list功能实现&#xff1a;在任意位置前…

vue2 导入使用vue-codemirror详解

目录 vue2 导入使用vue-codemirror详解1 介绍2 安装使用2.1 安装 vue-codemirror2.2 使用 codemirror2.2.1 引入 3 配置详情3.1 语言模式配置3.2 自动高度设置3.4 主题配置 4 总结 vue2 导入使用vue-codemirror详解 1 介绍 vue-codemirror是一个基于Vue的代码在线编辑器组件&…

【jenkins】主从机制及添加Slave节点操作

一、master-slave 日常构建Jenkins任务中&#xff0c;会经常出现下面的情况&#xff1a; 自动化测试需要消耗大量的 CPU 和内存资源&#xff0c;如果服务器上还有其他的服务&#xff0c;可能会造成卡顿或者宕机这样的情况&#xff1b; Jenkins 平台上除了这个项目&#xff0c…

把成绩私发给家长

与家长保持及时、有效的沟通对于学生的成长至关重要。但有时候&#xff0c;我会选择将学生的成绩私发给家长&#xff0c;而不是在公共场合公布。这样做有以下几个原因。 保护学生的隐私。每个学生都拥有自己的个人信息&#xff0c;这包括学习成绩。在公共场合公布成绩&#xf…

Sqoop数据迁移工具

概述 Apache Sqoop&#xff08;SQL-to-Hadoop&#xff09;项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下&#xff0c;轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中&#xff1b;同时也可以把数据从 Hadoop 系统…

【计算机二级考试C语言】C递归

目录 C 递归 数的阶乘 实例 斐波那契数列 实例 C 递归 递归指的是在函数的定义中使用函数自身的方法。 举个例子&#xff1a; 从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&#xff1f;"从…

都 2024 年了!程序员的到底出路在哪里!?继续卷技术?晋升管理层?还是转业?

都 2024 年了&#xff01;程序员的到底出路在哪里&#xff01;&#xff1f;继续卷技术&#xff1f;晋升管理层&#xff1f;还是转业&#xff1f; 1&#xff09;程序员的难处2&#xff09;程序员专业方向3&#xff09;大数据3.1.大数据开发涉及到哪些技术3.2.大数据开发涉及到的…

VxTerm:SSH工具中的中文显示和乱码时的相关信息和一些基本的知识

当我们写的程序含有控制台(Console)输出时&#xff0c;如果输入内容包含中文时&#xff0c;我们一般需要知道下面的信息&#xff0c;才能正确的搞清楚怎么处理中文显示的问题&#xff1a; 1、实际程序或文件中的实际编码&#xff1a; Linux下的应用程序和文本文件&#xff0c;…

2024年最佳的免费UI设计工具推荐

随着用户界面设计行业的蓬勃发展&#xff0c;越来越多的设计师加入到用户界面设计中来。选择一个方便的用户界面设计工具尤为重要&#xff01;除了传统的用户界面设计工具外&#xff0c;在线用户界面设计工具也受到越来越多设计师的青睐。这种不受时间、地点和计算机配置限制的…

centos7.6安装Docker详细步骤(无坑版教程)

一、安装前必读 在安装 Docker 之前&#xff0c;先说一下配置&#xff0c;我这里是Centos7 Linux 内核&#xff1a;官方建议 3.10 以上&#xff0c;3.8以上貌似也可。 注意&#xff1a;本文的命令使用的是 root 用户登录执行&#xff0c;不是 root 的话所有命令前面要加 sudo…

uniapp 使用canvas 画海报,有手粘贴即可用(拆成组件了,看后面)

1.直接使用 html部分 <view click"doposter">下载海报</view> <canvas canvas-id"myCanvas" type2d style"width: 370px; height: 550px;opcity:0;position: fixed;z-index:-1;" id"myCanvas" />js 部分 drawBac…

【数据结构】(三)树Tree

目录 1、基本概念 2、二叉树Binary Tree 3、树、森林与二叉树的转换 4、赫夫曼树Huffman Tree与赫夫曼编码Huffman Coding 1、基本概念 &#xff08;1&#xff09;树&#xff08;Tree&#xff09;是 n&#xff08;n ≥\geq 1&#xff09;个节点的有限集&#xff0c;n 0时称…

JavaScript基础(一)旧版基础笔记总结

开新藩&#xff08;虽然博主早以前已经学过了&#xff09;&#xff0c;从0开始复习JS&#xff0c;一方面应对毕设&#xff0c;一方面后期可能找找实习&#xff0c;一方面复试可能也会涉及到吧&#xff0c;说起这个最近越等越焦虑QAQ&#xff0c;还要一个月才出分呢...... 本帖先…

HubSpot CRM是什么?有什么功能和特点?

HubSpot CRM&#xff08;Customer Relationship Management&#xff0c;客户关系管理&#xff09;是一款由HubSpot公司开发的免费的、云端的CRM软件。HubSpot CRM致力于帮助企业更好地管理客户关系&#xff0c;提高销售效率&#xff0c;同时通过集成多个营销、销售和服务工具&a…

springboot mybatis-plus 项目分层笔记

整体定义 config: 配置项&#xff0c;包含configuration注解 constants: 常量类enums: 枚举 exceptions: 全局异常处理&#xff0c;自定义异常&#xff0c;RestControllerAdvice 注解 fia3: 三大器依据执行顺序&#xff1a;过滤器filter、拦截器interceptor、切面aop 简称 fia…

中科大计网学习记录笔记(一):Internet | 网络边缘

计算机网络 前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面…

时间序列预测 —— LSTM模型

时间序列预测 —— LSTM模型 1. 引言 时间序列预测是指在给定的历史时间序列数据上,使用模型来预测未来的数值。长短时记忆网络(Long Short-Term Memory, LSTM)是一种深度学习模型,广泛应用于时间序列预测任务。本文将介绍LSTM模型的理论基础、相关公式,分析其优缺点,并…

牛客,OR36 链表的回文结构,快慢指针和反转链表的实践

链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 还是比较简单的&#xff0c;主要分为三个步骤&#xff0c;两种需掌握的函数实现 目录 主要思路过程&#xff0c;1&#xff0c;找到中间结点&#xff0c;2&#xff0c;反转中间结点往后的结点&#xff0c;3&#xff0c;遍历比…
最新文章