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

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关联案例的补充。

http://www.jsqmd.com/news/119166/

相关文章:

  • 【稀缺资料】Open-AutoGLM企业级实战FAQ:仅限内部流传的7条黄金法则曝光
  • 好写作AI:论文写到后面忘了前面?你可能需要这份“逻辑心电图”
  • 理发预约困局终结者:如何用Open-AutoGLM实现秒级响应与动态调优
  • Open-AutoGLM自动化预约系统部署教程(附完整代码+避坑清单)
  • 11.25
  • JavaSE——流程控制
  • 10.9
  • 好写作AI:修改AI生成的内容,比你自己写还累?该换思路了
  • 【Open-AutoGLM家政服务下单揭秘】:如何用AI自动接单提升服务效率500%
  • 什么是Numpy?
  • 为什么90%的KTV都在接入Open-AutoGLM?真相令人震惊
  • 我发现多尺度因果图漏不确定性,后来补鲁棒优化才稳住治疗策略
  • 【Open-AutoGLM理发预约系统揭秘】:如何用AI智能调度提升门店效率300%
  • 人工智能之数字生命--从点云 → 自动子存在生成4
  • 好写作AI:你的论文为什么读起来像AI写的?
  • 10.10
  • 【限时稀缺教程】:用Open-AutoGLM实现毫秒级电影票抢购,成功率提升90%
  • AI自动排程革命(从混乱到精准:Open-AutoGLM预约系统实战案例)
  • Open-AutoGLM美甲服务上线背后:9个关键技术决策让系统稳定运行
  • 搞懂大数据CAP定理,为大数据项目保驾护航
  • 人工智能之数字生命--人类是如何“自然地”把人体划分为头、手臂、躯干、腿等部分的?
  • 好写作AI:别让分析私有数据,成为你论文的“隐形牢笼”
  • 当答辩PPT,成了扼杀学术表达的最后一道屏障
  • 宠物门店效率提升300%的秘密(Open-AutoGLM自动化预订实战案例)
  • 人工智能之数字生命--从点云 → 自动子存在生成1
  • Open-AutoGLM如何重塑KTV预订体验:3大核心技术亮点全曝光
  • 重塑文字指纹:当降重不再是“同义词替换”的文字游戏
  • 第40次CCFCSP认证邮寄
  • Excalidraw API接口调用示例:自动化绘图集成方案
  • Open-AutoGLM家政系统实战:3步实现智能派单与订单自动化处理