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

面试题:MySQL优化,项目中举例

目录

一、SQL优化分两部分,如何发现慢SQL和如何优化慢SQL

二、项目举例


一、SQL优化分两部分,如何发现慢SQL和如何优化慢SQL

  • 发现慢SQL有两种方案:第一种是开启我们的慢日志, 第二种就是使用skywalling发现慢的接口,进而发现慢sql

  • 比如说我们采用慢日志的方式发现慢sql,可以结合xxl-job每天定时扫描,将慢sql,发到我们公司的邮箱里。

  • 我们在使用explan分析计划分析一下这些慢sql

  • 提到explan,我们重点说一下我们的type列

  • const:通过索引只返回一行数据

  • eq_ref:通过等值查询返回数据

  • ref:通过非唯一索引返回数据

  • range:范围查询

  • index:全索引扫描

  • all:全表扫描

  • 如果发现我们的sql,通过explain分析计划没有走索引,那就要考虑一下索引是否失效,看看sql是否满足最左匹配原则,查询的范围有没有大于三分之一、列上是否有函数计算、数据类型是否匹配等。

二、项目举例

  • 在我们的项目当中,我们也遇到过SQL优化的场景,比如说我们做了一个报表,统计一下商品的过期时间,一开始我们数据库里的数据量比较少,接口的响应速度很快,后来数据量慢慢变大,我们通过skywalling发现这个报表的接口响应速度有点慢,那我们就去分析,分析它的原因是将过期时间的计算都交给了数据库,导致数据库的压力比较大,所以我们在看库存表里派生出一个过期时间字段,在业务层就将这个字段的值给计算出来,这样就减少了数据库的压力,提高了接口的响应速度。

http://www.lryc.cn/news/384018.html

相关文章:

  • Spring Boot中的事件驱动编程
  • 代码随想录算法训练营第五十天| 1143.最长公共子序列、1035.不相交的线、53. 最大子序和、392.判断子序列
  • 【Redis】数据持久化
  • 基于Python+Flask+MySQL+HTML的B站数据可视化分析系统
  • 桥接模式
  • docker中mysql突然无法远程连接设置
  • Nuxt3 的生命周期和钩子函数(二)
  • 用英文介绍孟买:Mumbai India‘s Transforming MEGACITY
  • 镜像发布至dockerHub
  • vscode + CMake编译(opencv显示图片工程)
  • JavaScript的学习之强制类型转换
  • 天润融通:AI赋能客户体验,推动企业收入和业绩增长
  • Android与服务器交互的方式中的对称加密和非对称加密(kotlin)
  • epoch和batch的区别
  • 非递归创建二叉查找树
  • 摄影师危!AI绘画即将降维打击摄影行业
  • ts 中class
  • 深度解析RocketMq源码-高可用存储组件(四)Dledger框架日志同步流程
  • ONLYOFFICE 文档开发者版 8.1:API 更新
  • Activemq单节点在Windows下的配置部署
  • SpringBoot-注解@ImportResource引入自定义spring的配置xml文件和配置类
  • GitLab配置免密登录之后仍然需要Git登录的解决办法
  • 探索小众爱好:打造个人韧性与特色之路
  • GitHub使用教程(小白版)
  • 深度解析SD-WAN在企业组网中的应用场景
  • 【INTEL(ALTERA)】Eclipse Nios II SBT 无法从模板创建新应用程序和 BSP
  • Vue_cli搭建过程项目创建
  • 面试题4:POST 比 GET 安全?
  • Github生成Personal access tokens及在git中使用
  • 【BUG记录】条件查询没有查询结果 || MybatisPlus打印查询语句