news 2026/9/3 3:50:55

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/9/2 19:39:18

AI自动排程革命(从混乱到精准:Open-AutoGLM预约系统实战案例)

第一章:AI自动排程革命:从混乱到精准的变革在传统生产与项目管理中,资源调度长期依赖人工经验,面对复杂任务网络时极易陷入效率瓶颈。AI驱动的自动排程系统正以前所未有的精度和速度重塑这一领域,将原本碎片化、易出错…

作者头像 李华
网站建设 2026/9/2 20:08:03

Excalidraw图层管理技巧:复杂图形组织策略

Excalidraw图层管理技巧:复杂图形组织策略 在技术团队的日常协作中,一张清晰的架构图往往胜过千言万语。无论是远程讨论微服务部署,还是评审产品原型流程,Excalidraw 已成为许多工程师首选的可视化工具——它手绘风格自然、操作轻…

作者头像 李华
网站建设 2026/9/2 21:01:36

C#如何结合开源库实现.NET Core百万文件上传的优化方案?

.NET程序员的血泪奋斗史:从0到1搞定大文件上传(含IE8兼容) 咱福建.NET仔最近接了个外包活,客户是做政府资料管理的,需求就一句话:“搞个大文件上传功能,20G文件随便传,文件夹要留层…

作者头像 李华
网站建设 2026/9/2 16:34:14

前端如何配合.NET Core实现大文件上传的进度条动态显示?

【大三学生的暴富(毕业)设计日记】 各位前端战友们好!我是福州那个天天被毕业设计逼得快秃头的通讯专业大三学生小王,最近为了搞定一个“文件管理系统”的毕业设计,被导师要求实现一个支持10G文件上传、加密传输、断点…

作者头像 李华
网站建设 2026/9/3 1:18:21

.NET Core如何支持多平台大文件分片上传的兼容性配置?

大文件传输系统技术方案设计与实现(第一人称专业报告) 一、项目背景与需求分析 作为广西某软件公司前端工程师,近期负责一个关键项目的大文件传输模块开发。该项目需求具有以下特点: 支持20GB级大文件传输(上传/下载…

作者头像 李华
网站建设 2026/9/2 5:19:05

【限时掌握】Open-AutoGLM新手引导配置:3天内完成项目部署的秘密

第一章:Open-AutoGLM 新手引导配置欢迎使用 Open-AutoGLM,一个面向自动化自然语言任务的开源大语言模型框架。本章将引导你完成基础环境配置与服务初始化,确保系统可正常运行。环境准备 在开始前,请确认本地已安装以下依赖&#x…

作者头像 李华