news 2026/5/13 4:45:38

in 子查询 or in 子查询改写

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
in 子查询 or in 子查询改写

1、 问题语句

select t1.c1,t1.c2,t1.c3 from t1 where(t1.gid in(select gid from t2 where d1 ='C2')or t1.gid in(select gid from t3 where e1 ='C2'))and(t1.c1 ='C4'or t1.c1 is null)and(t1.c2 liketrim('D4%')or t1.c3 liketrim('E7%'));

计划:

这里的in子查询+or+in子查询做成表达式,无法先过滤,这里in子查询里面的条件过滤性较好,可以利用索引先过滤,之前的文章中有提过or条件可以改写成union all,这里可以考虑改写成union all。

2、改写

select t1.c1,t1.c2,t1.c3 from t1 where(t1.gid in(select gid from t2 where d1 ='C2'union all select gid from t3 where e1 ='C2'))and(nvl(t1.c1,'C4')='C4')and(t1.c2 liketrim('D4%')or t1.c3 liketrim('E7%'));

计划:

这里能够很好的利用索引先过滤,这里能够很好的利用索引先过滤,另外in也可以改写成exists,于是这个改写又有另一种改写方法

select t1.c1,t1.c2,t1.c3 from t1 where exists(select 1 from(select gid from t2 where d1 ='C2'union all select gid from t3 where e1 ='C2')A where t1.gid = A.gid)and(nvl(t1.c1,'C4')='C4')and(t1.c2 liketrim('D4%')or t1.c3 liketrim('E7%'));

计划:

两种改写方法计划一致,性能都提升几十倍。

3、小结

or条件过滤性很好就比较适合做union all,这个例子也是对前面or关联案例的补充。

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

打开Simulink随手搭了个并联型APF模型,今天咱就唠唠这个仿真里几个关键模块的实现门道。先说谐波检测这茬,p-q算法核心就是坐标变换三板斧。看这段代码

并联型有源电力滤波器 APF simulink仿真 谐波提提取算法基于瞬时无功功率理论的p-q谐波检测算法;谐波控制算法基于经典的PI控制;调制算法基于两电平svpwm 分为补偿全部谐波与补偿特定次谐波两大部分;治理后谐波水平低于3%&#xf…

作者头像 李华
网站建设 2026/5/13 5:16:05

当答辩PPT,成了扼杀学术表达的最后一道屏障

深夜的实验室里,伴随着最后一个实验数据录入完毕,张明的毕业论文终于抵达了终点线——只差最后一步:制作答辩PPT。 他打开一个空白演示文稿,光标在“单击此处添加标题”处不停闪烁,仿佛在无声地嘲讽。他试图回想导师的…

作者头像 李华
网站建设 2026/5/10 22:53:47

从零搭建智能美甲预约系统,我只用了这5步(Open-AutoGLM实战全记录)

第一章:从零构建智能美甲预约系统的初衷与架构设计在传统美甲店运营中,客户常面临预约难、服务时间冲突、技师排班混乱等问题。为解决这些痛点,我们决定从零构建一套智能美甲预约系统,旨在提升用户体验与门店管理效率。该系统不仅…

作者头像 李华
网站建设 2026/5/10 22:53:35

Open-AutoGLM家政系统实战:3步实现智能派单与订单自动化处理

第一章:Open-AutoGLM 家政服务下单Open-AutoGLM 是一个基于大语言模型的自动化任务调度框架,专为家政服务场景设计。它通过自然语言理解与意图识别技术,将用户请求自动转化为可执行的服务订单,并驱动后端系统完成资源分配与流程调…

作者头像 李华
网站建设 2026/5/10 23:52:43

浮点数的本质:为什么计算机无法精确表示0.1

浮点数的本质:为什么计算机无法精确表示0.1 当你在 C 中写下 float x 0.1; 时,你以为计算机存储的就是精确的 0.1。但事实是,计算机存储的是一个非常接近 0.1 的近似值。这不是编译器的缺陷,也不是硬件的问题,而是浮点…

作者头像 李华