前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工作记录二: 记录一次简单的SQL优化过程

工作记录二: 记录一次简单的SQL优化过程

作者头像
时间静止不是简史
发布2020-07-24 16:47:52
4130
发布2020-07-24 16:47:52
举报
文章被收录于专栏:Java探索之路

在工作时, 和同事一起遇到了一个关于SQL优化方面的问题, 现在将解决过程记录如下

项目缺陷描述

项目分析思路

  1. 首先F12进入开发者模式, 查看最费时的请求
  1. 然后利用restful风格接口工具集( RestfulToolkit ) : 用于将前端请求的url与后端的controller对应. 安装后的快捷键( Ctrl+\ )

对应的controller方法如下,可以看到该方法将request的storeId设置为空, 下面又调用listCateByStoreId()方法, 我们可以通过ctrl+alt+listCateByStoreId 进入该方法的实现类

  1. 我们从listCateByStoreId()方法的实现类可以看出, 该方法的实现类要获取request对象的storeId, 而我们又没有设置,导致进行权标扫描

改进

  1. 通过封装的方法去查StoreId, 然后进行相关条件的判断
  1. 在数据库中为该字段添加索引. 我们在GoodsCate表中无法找到storeId,但在goods表中可以找到Store,因此我们需要在goods表中为goods表中为storeId字段添加索引

同理, 下面的两个请求优化如下

优化后的结果如下图, 可以看到后端的响应速度得到了很大的优化

SQL优化思路总结

①找出影响性能的关键所在 ②找出关键代码 ③找出关键代码执行的sql语句 ④初步分析优化sql语句,仅仅只查询主信息 ⑤通过使用explain关键字分析再次优化SQL语句 ⑥根据主信息的信息去并行查询不相互依赖的附属信息, 然后在代码中去组装这些信息

其他解决方法:

  • 开启慢查询, 可以在mysql目录bin下有个慢查询日志里看到SQL执行情况
  • 在where后面建立一个组合索引,提升多表和条件查询效率
  • 未完待续…
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目缺陷描述
  • 项目分析思路
  • 改进
  • 同理, 下面的两个请求优化如下
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档