news 2026/6/11 0:01:18

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/6/10 7:52:34

人工智能之数字生命--从点云 → 自动子存在生成2

下面给一套可直接落地的“跨帧簇匹配(cluster tracking / data association)”方案,目标是: 把每帧分割出来的点簇 C_t[i],稳定地对应到上一帧(或历史)的同一个“子存在候选轨迹 Track”。 我按现在的系统习惯来写:毫米(mm) 统一单位、带命中次数、支持“生成子存在”…

作者头像 李华
网站建设 2026/6/10 13:15:34

手把手教你用 Open-AutoGLM 实现自然语言电影查询,效率提升90%

第一章:Open-AutoGLM 电影场次查询 在现代智能对话系统中,Open-AutoGLM 是一个专为自然语言理解与任务执行优化的开源框架。它能够解析用户意图,并结合外部数据源完成复杂操作,例如实时查询电影场次信息。 功能实现原理 Open-Aut…

作者头像 李华
网站建设 2026/6/10 13:34:08

Excalidraw社区生态盘点:最受欢迎的第三方资源

Excalidraw社区生态盘点:最受欢迎的第三方资源 在远程办公成为常态、敏捷协作深入研发流程的今天,团队对轻量级可视化工具的需求正以前所未有的速度增长。尤其是在技术讨论中——比如一次系统架构评审或产品原型脑暴——我们常常需要快速表达一个想法&a…

作者头像 李华
网站建设 2026/6/10 13:28:36

【限时揭秘】Open-AutoGLM本地数据加密的3种高效架构设计模式

第一章:Open-AutoGLM本地数据加密存储优化在部署 Open-AutoGLM 模型时,本地数据的安全性至关重要。为防止敏感训练数据或推理结果被非法访问,需对本地存储实施加密策略。通过集成现代加密算法与安全密钥管理机制,可显著提升系统的…

作者头像 李华