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

Before After:SQL整容级优化

首先说明这个优化有一定提升,但不是我所期望的

我接到一个涉及优化的SQL,具体内容实在太长。而且可能也不利于阅读。于是我脱敏以及简化一下。SQL中间大量的充斥着
(select 列名1
from t1
where t1.id = t2.id
) A,
(select 列名2
from t1
where t1.id = t2.id
) B,
(select 列名3
from t1
where t1.id = t2.id
) C,

这样的的形式,如果配合实际的列,实际的表。那就太长了。洋洋洒洒数百行。

SQL最后是用到索引的,所以本次不是给索引方向的优化。

就上面的SQL而言,我和对方说,你这个就是t1和t2关联,每一个字段都去关联循环一次,这样平白无故多做了很多次。其实把他放在一行一次性可以完成。这种时候一定要举例。

拿一个样品 A和B两个表

image.png

模拟原始写法是这样的

image.png

那么我给的改写建议是这样的

image.png

从这两个来说结果一致的,可以说基本是等效的。

那么看原始的执行效果

image.png

一共有三步access执行,最终发生了31次逻辑读。

而改写的执行效果

image.png

一共有两步access执行,最终发生了14次逻辑读。
毕竟我少一层括号。 而真实的SQL如果改写了,那么就不是一层,那是几十层了。

这背后的原因我是多少能猜出一点的

这些年站在开发角度看问题就习惯了。
就是需求提一个字段,加一个字段,那么就来一个括号。N表的联合,每次多一个也不方便动之前的,就加吧。流水线作业,铁打的代码流水的开发。今天做完这个,明天还不一定做什么呢?
还有不少企业是外包做,那么就是雇佣兵,明天还在不在这里还一说呢。只管完成眼前任务。
当进度和质量冲突时候,保证进度。进度是影响收入的,质量不是。

最终一定是有优化作用

毕竟少了几十个循环,一定是快了。而且SQL的篇幅是大幅降低。
当然还有一些其他方面的建议没有达成一致。其实很多时候去管管不着调的需求,能有更好的收益。

相关文章:

  • 学习八股的随机思考
  • Scratch037-(钢琴)
  • 数据库9(实验过程中补充学习)
  • 负氧离子是怎样产生的?
  • 百度网盘安卓版下载速度与储存体验分析
  • 2025年机电一体化、机器人与人工智能国际学术会议(MRAI 2025)
  • 解决在linux下运行rust/tauri项目出现窗口有内容,但是渲染出来成纯黑问题
  • 多语言编写的图片爬虫教程
  • Jmeter接口性能测试方案
  • (一)机器人仿真平台pybullet基础学习(操作记录)
  • yolov11设置n、m、s、l、x对应的模型大小
  • 服务器风扇故障导致过热问题的解决方案
  • 力扣面试150题—旋转图像和矩阵置零
  • Alembic 和 fbx存储结构和存储动画对比
  • 48、Spring Boot 详细讲义(五)
  • 最新扣子实战教程,利用扣子平台通过在线表格记录,批量生图,再也不要一条条的粘贴提示词了
  • 如何查看网页或任意文档中的颜色数值
  • 如何用DeepSeek大模型提升MySQL DBA工作效率?实战案例解析
  • 英飞凌TLE9891 +TLE5501 有感油泵FOC控制方案
  • truss开源程序在生产中提供 AI/ML 模型的最简单方法
  • 云南昭通一公园发现毒饵,多只宠物狗疑中毒致死
  • 海拔四百公里的救赎
  • 张宝亮履新临沂市委书记表态:不断提升在全省全国经济版图中的发展位势
  • 北京理工大学:教师宫某涉嫌师德失范,暂停其一切职务活动
  • 加快从数量增长向品质跃升转变,促进生态空间与城市功能有机共生!龚正调研公园城市建设工作
  • 美政府公布1968年罗伯特·肯尼迪遇刺事件档案