news 2026/3/31 19:42:03

先过滤后关联的优化经验分享

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
先过滤后关联的优化经验分享

1、问题语句

最近遇到一个问题,发现开发人员比较喜欢单一的将表放一块一起做关联。如果有了先过滤后关联的思维,大部分语句的性能会获得提升。
以下是真实项目简化而来的例子

select * from(select a.c1,a.mid,a.bcode,c.ttime,row_number()over(partition by a.bcode order by c.ttime desc)rn from"T11"A,T12 b,t13 c where a.id1=b.id1 and a.id1=c.id1(+)and a.c1=3 and b.c1=3 and b.bcode='0300')tt where tt.rn=1;

计划:

该语句最终是获取去重后rn=1(即每组第一行)的数据,而我们分析到t13表数据量很多,这里简单的关联后再去重,性能消耗较多,而优化思路是先t11表和t12表先过滤条件和去重之后,以及t13表去重过滤后,两个小的结果集进行关联,这样性能会提升。因此根据我们的思路进行改写。

2、改写

select tt.c1,tt.mid,tt.bcode,b.ttime,rn from(select a.c1,a.mid,a.bcode,a.id1,row_number()over(partition by a.bcode order by null desc)rn from"T11"A,T12 b where a.id1=b.id1 and a.c1=3 and b.c1=3 and b.bcode='0300')tt,(selectmax(ttime)ttime,id1 from t13 group by id1)b where tt.rn=1 and tt.id1=b.id1(+);

计划:

最终性能提升了几倍,在项目中的数据较多,原本语句也复杂,改写后从原来跑20分钟,到最终秒级执行完。

3、小结

我们一般要先过滤出小结果集再关联,相当于我们先分组减去重复的部分,减少对比次数,从而提升效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 5:09:04

Flutter for OpenHarmony 剧本杀组队App实战22:快速匹配功能实现

引言 快速匹配功能帮助用户自动寻找合适的队伍,无需手动浏览组队列表。本篇将实现带有匹配动画的快速匹配页面。快速匹配是现代社交应用的重要功能,通过算法自动配对用户,大大提升了用户体验和应用的活跃度。这个功能特别适合剧本杀组队场景…

作者头像 李华
网站建设 2026/3/16 15:05:54

云端VS本地 RFID资产管理系统怎么选?优缺点大揭秘

一、开篇:资产 “迷路”?RFID 系统部署抉择是关键 1.1 传统资产管理的 “老大难” 痛点 家人们,在企业的日常运营里,资产管理要是没做好,那可真是麻烦不断!就说传统的人工盘点方式,简直就是一…

作者头像 李华
网站建设 2026/3/27 11:09:10

大模型应用文本理解OpenAI使用入门篇

前言 本文介绍使用OpenAI完成特定文本理解任务。 构建环境 本地安装Ollama或通过阿里云百炼平台获取API_KEY ,https://bailian.console.aliyun.com/cn-beijing/?spma2c4g.11186623.0.0.2dab6323kanAoF&tabmodel#/api-key,配置到环境变量中后需要重启电脑生效。…

作者头像 李华
网站建设 2026/3/31 1:45:53

信号处理仿真:滤波器设计与仿真_18.实时信号处理仿真

18. 实时信号处理仿真 18.1 实时信号处理的基本概念 实时信号处理是指在信号采集或生成的同时进行处理,以满足特定的时延要求。在许多应用中,如通信系统、音频处理、视频处理等,实时处理是必不可少的。实时信号处理的关键在于系统能够在限定…

作者头像 李华
网站建设 2026/3/17 22:39:50

大厂迷思:为什么顶级工程师会产出难以维护的代码

当你终于通过几轮严苛的技术面试,加入一家享有盛誉的大型科技公司时,往往会对即将接触的代码库抱有极高的期待。你想象着整洁的架构、清晰的文档以及如教科书般完美的逻辑实现。然而现实往往极具冲击力:你所看到的可能是一个由无数补丁堆叠、…

作者头像 李华