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

记一次mysql索引优化

生产日志告警出现一条慢 sql 告警, 通过 sql 监控平台拿到 这条sql 语句是 :

SELECTid,report_id,report_detail_id,item_code,report_type,photo
FROM**** 表 
WHEREdel_flag = 0 AND (report_type = 1 AND report_detail_id IN ( 1742 ))

之后用 explain 分析这条 sql 的命中索引情况, 发现未命中任何索引, 并且已经是全表扫描了

查看这张表的已经创建的索引情况, 发现该表除了主键id索引之外, 只有 report_id 这一条业务字段的索引

而业务代码有大量的查询逻辑, 需要根据 report_detail_id 这个字段来查询, 所以对 report_detail_id 这个字段添加 单独索引,

注意 : 由于这张表数据量不大, 所以我这里直接写DDL添加该索引

如果表数据量很大的话, 直接添加索引会引起锁表,表数据量越大, 添加索引时间越长, 锁的越久, 报错 Waiting for meta data lock,造成业务崩溃

使用如下语句添加索引:

CREATE INDEX idx_report_detail_id ON *** 表(report_detail_id);

之后查询这张表的索引情况, 发现已经添加了业务字段: report_detail_id 这个索引

再次使用 explain 分析刚才慢 sql 的执行效率, 发现现在只扫描了 2 行记录, 比起之前的 全表扫描, 效率有很大的提升: 

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

相关文章:

  • 【Javascript系列】Terser通过调用API来实现代码的压缩和优化功能
  • 嵌入式期末复习
  • 生信算法7 - 核酸序列Fasta和蛋白PDB文件读写与检索
  • 【Python】Python异步编程
  • pytorch笔记:自动混合精度(AMP)
  • R语言ggplot2包绘制世界地图
  • 【Linux】Linux的权限_1
  • 日语_远程办公常用日语单词
  • MTK 平台项目security boot 开启/关闭 及 系统签名流程
  • JDBC连接MySQL
  • 【Qt】【模型视图架构】 在项目视图中启用拖放
  • B端产品无爆款,说有的都是忽悠和外行!
  • 腾讯云的身份证核验,找不到这个类
  • vue3 vue-draggable-next 实现拖拽穿梭框效果
  • FreeRTOS【16】直达任务通知使用
  • 关于软件<PDF文档管理系统V1.0>的介绍
  • Java面试题-Tomcat初级面试题
  • 红队内网攻防渗透:内网渗透之windows内网权限提升技术:数据库篇
  • rust嵌入式开发之总结
  • 【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版6(附带项目源码)
  • 回溯算法指组合总和
  • java-stream转换map key重复报错解决小记
  • 王春城 | 如何解决精益转型过程中的信任问题?
  • Ubuntu Nvidia Docker单机多卡环境配置
  • 小公司的软件开发IT工具箱
  • 代码随想录算法训练营第四十四天| 背包问题、背包问题之滚动数组、416. 分割等和子集
  • 最新一站式AI创作中文系统网站源码+系统部署+支持GPT对话、Midjourney绘画、Suno音乐、GPT-4o文档分析等大模型
  • C# 语言类型(二)—预定义类型之字符串及字符类型简述
  • 微信小程序canvas画图使用百分比适配不同机型屏幕达到任何屏幕比例皆可!完美适配任何机型!指定canvas尺寸适配亦可!保证全网唯一完美
  • Redis-02