晚饭都没吃,我一前端帮后端做了一点SQL优化,才避免了通宵

简介: 最近上线了一个新系统,刚试点运行,用户量不大还没什么大问题。但随之培训和大规模用户开始使用后,问题出现了。而且出现了好多问题,大部分都是后端的,这里就不细讲了。说说与我前端相关的吧。由于我会一点后端。

image.png


1、前言


其实感觉自己做的这点sql优化也算是比较常规的,没什么太大的难度。


最近上线了一个新系统,刚试点运行,用户量不大还没什么大问题。但随之培训和大规模用户开始使用后,问题出现了。而且出现了好多问题,大部分都是后端的,这里就不细讲了。说说与我前端相关的吧。由于我会一点后端。


  • 后端准备叫我开mysql客户端,删除多余的数据


  • 删就删吧,但是要删除的多余数据还有点多


  • 删除以后发现,还他妈有好多要删除的数据,原来三个后端也同时在删除数据


  • 于是我优化了三次sql语句,轻松实现批量删除


  • 如果下次再有这种类似的情况,我得写个相关的小工具了


  • 真的太浪费时间了,也不明白后端为啥不想想办法呢?可能是因为线上bug的压力,没空想吧


2、看看重复记录


根据这三个筛选条件,本来是可以确定唯一记录的。可是并没有,有的记录甚至七八条重复的。


image.png


现在要做的就是把重复记录都只保留一条。


3、开始删除重复记录


image.png


我这是在Navicat工具里删除的,如果只有一条或者几条重复记录这样删删也就完了。但是后端大佬给了100个areaid。年份是固定的2022没什么好说的,每个areaid下的name有89个不重复的。如果一个name一个name的删除要到猴年马月了。这里如上图所示就删除其中一条就好了。


image.png


这里是后端给我的要删除的areaid,也就是具体的name是不太清楚的,因为太多了,还得自己去查。


4、优化删除


因为这是三个查询条件下的数据,如果不加name,把所有这个areaid下的,所有的name 数据可能就有很多了,每次要根据给的areaid进行查询(年份是固定的这里我就不说了)


select s.name as 'sname', s.* from CollectDataSummary s 
where s.areaid = 23 and s.nf = 2022 
order by s.name desc 


image.png


可以看到我只是加了一个排序,然后最上面几条就可以看出三条记录是重复的就要进行删除其中的两条。其实这里正式环境用户量很多,产生一样的数据也非常多,所以删除起来还是比较麻烦的。


这里我想了一下,先查出一个areaid下有重复记录的name


select s.name from CollectDataSummary s 
where s.areaid = 23 and s.nf = 2022 
group by s.`name` HAVING count(s.`name`)> 1


image.png


然后再查询一次,将上面查询的重复的name也作为条件进行查询


select * from CollectDataSummary c 
where  c.areaid = 23 and c.nf = 2022 
and c.name in (select s.name from CollectDataSummary s 
where s.areaid = 23 and s.nf = 2022 group by s.`name` HAVING count(s.`name`)> 1)


image.png


这样查出来可以发现,可以点点将重复的记录都进行删除。勉强一下干了半个小时,我把后端给我的areaid都删除了。


并且我把我这个sql给他们,他们三个后端也在进行删除了,一顿操作后,我手里的这一批几十个删完了。


然后我问了一下都删完了吗,尼玛还有好多好多,按照现在这样删除,他们三个人可能还要删除三个小时,于是我又陷入了沉思.....


5、再次优化删除


想了想,我可以根据name进行分组,然后其实就是只选择了相同数据的其中一行


select a.id from CollectDataSummary a where a.areaid in (
23)  and a.nf=2022 group by a.name having count(a.name)>1


这样的话,我就把这些数据留下吧,然后结合了一下4、优化删除中的sql


image.png


把通过group by 单独查询出来的一组数据通过not in 过滤掉,这样就留下这组数据,其他所有的数据都是要删除的,这样的话就是查询出来的数据,Ctrl + A全选再加上 Delete就完事了,还是非常的方便


6、总结


  • 虽然我觉得这次我帮了大忙,但是这点sql好像也没啥技术含量


  • 其实我想到还可以直接写个delete语句的,但是这样只能看到删除的数据量


  • 然后再不行写一个存储过程将要删除的areaid传进去,循环慢慢删除


  • 还有大招我直接写个页面调用接口来删除,可能更灵活一些,当然要做好检查和确认


第二天想去再看看的时候,数据库已经访问不了了,行吧,继续搞我的前端吧,有空去试试mysql的存储过程,免的啥时候真能派上用场。

目录
相关文章
|
4月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
365 1
|
3月前
|
前端开发 JavaScript 索引
前端性能优化:虚拟滚动技术原理与实战
前端性能优化:虚拟滚动技术原理与实战
439 80
|
3月前
|
缓存 监控 前端开发
前端性能优化:现代框架的关键策略
前端性能优化:现代框架的关键策略
199 74
|
3月前
|
缓存 前端开发 JavaScript
前端性能优化:打造流畅的用户体验
前端性能优化:打造流畅的用户体验
|
4月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
225 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
5月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
366 70
|
6月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
255 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
4月前
|
SQL 存储 自然语言处理
SQL的解析和优化的原理:一条sql 执行过程是什么?
SQL的解析和优化的原理:一条sql 执行过程是什么?
SQL的解析和优化的原理:一条sql 执行过程是什么?
|
6月前
|
前端开发 算法 NoSQL
前端uin后端php社交软件源码,快速构建属于你的交友平台
这是一款功能全面的社交软件解决方案,覆盖多种场景需求。支持即时通讯(一对一聊天、群聊、文件传输、语音/视频通话)、内容动态(发布、点赞、评论)以及红包模块(接入支付宝、微信等第三方支付)。系统采用前后端分离架构,前端基于 UniApp,后端使用 PHP 框架(如 Laravel/Symfony),配合 MySQL/Redis 和自建 Socket 服务实现高效实时通信。提供用户认证(JWT 集成)、智能匹配算法等功能,助力快速上线,显著节约开发成本。
128 0
前端uin后端php社交软件源码,快速构建属于你的交友平台
|
5月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
382 12

热门文章

最新文章