经常在开发过程中会用到视图或组合查询的情况,但由于涉及表数据经常达到千万级别的笛卡尔积,而且一段查询时会反复调用,但结果输出往往不需要那么多,可以使用with将过滤或处理后的结果先缓存到临时表(此处原理不太清楚,仅代表我的理解),可以大大提高查询效率

另外,WMSYS.WM_CONCAT 这个函数可以将查询结果某列多行拼接成一个结果,非常实用

示例:

/*查询当前EOMS流程组及组织架构信息create by Gemini.Liu2014-01-07*/--create or replace view  v_getcurrent_workflow as--组信息with group_info as(select gp1.group_intid,gp1.group_id,gp1.group_name,gp1.group_fullname,       decode(gp1.group_type,3,gp1.group_fullname,2,gp1.group_fullname,gp2.group_fullname) arch,       decode(gp1.group_type,3,gp1.group_id,2,gp1.group_id,gp2.group_id) archidfrom ultraprocess_sysgroup gp1,ultraprocess_sysgroup gp2where 1=1and gp1.group_parentid=gp2.group_idand (gp2.group_type = 3 or gp2.group_type = 2)),--组成员group_user as(select WMSYS.WM_CONCAT(us1.user_fullname) person,WMSYS.WM_CONCAT(us1.user_loginname) personid,us2.group_intid from ultraprocess_sysuser us1,ultraprocess_sysgroup us2,ultraprocess_sysgroupuser us3where 1=1and us1.user_id=us3.mgroup_useridand us2.group_id=us3.mgroup_groupidgroup by us2.group_intid),--映射信息dp_map as(select hj.groupid,hj.processbaseschema from wf_app_dealprocess hjwhere  1=1and  hj.groupid is not nulland  hj.processbaseschema is not nulland  hj.edprocessaction<> 19group by groupid,processbaseschema)/*--工单信息,form_info as(select info.basesn,info.baseschema,info.basename,info.basestatus,info.baseid,hj.group_x,hj.groupid,hj.flagactive from wf_app_base_infor info,wf_app_dealprocess hjwhere 1=1and info.baseid=hj.processbaseidand info.baseschema = hj.processbaseschemaand info.basestatus <> '已作废'and hj.edprocessaction<> 19)*/--展现信息select dp_map.processbaseschema 工单类别,group_info.group_intid 组ID,group_info.group_name 组名,group_user.person 组成员,group_user.personid 组成员登录名,group_info.arch 所属部门,group_info.archid 所属部门IDfrom dp_map,group_info,group_userwhere 1=1 and dp_map.groupid = group_info.group_intidand group_user.group_intid = group_info.group_intid

转载于:https://www.cnblogs.com/telwanggs/p/4884218.html

oracle使用with as提高查询效率相关推荐

  1. oracle 语句提高查询效率的方法

    oracle 语句提高查询效率的方法 1:.. where column in(select * from ... where ...); 2:... where exists (select 'X' ...

  2. 自问自答——使用视图能提高查询效率么?

    问:使用视图能提高查询效率么? 答:普通视图只是记录相当于把查询语句持久化了,下次再按照这个查询条件来查询一遍,只是添加了一个对多表关联更加方便的查询入口而已,并不能实际提高查询效率.通过物化视图可以 ...

  3. 千万级游标_在一个千万级的数据库查寻中,如何提高查询效率

    在一个千万级的数据库查寻中,如何提高查询效率? 1)数据库设计方面: a.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. b.应尽量避免在 w ...

  4. ElasticSearch 在数十亿级别数据下,如何提高查询效率?

    来源:https://zhuanlan.zhihu.com/p/60458049 面试题 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 面试官心理分析 这个问题是肯定要问的,说白了,就 ...

  5. ElasticSearch面试 - es 在数据量很大的情况下如何提高查询效率啊?

    面试题 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 面试官心理分析 这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的.很多时 ...

  6. ES 在数据量很大的情况下如何提高查询效率

    如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的. 很多时候数 ...

  7. mysql 虚拟列索引_使用MySQL 5.7虚拟列提高查询效率

    原标题:使用MySQL 5.7虚拟列提高查询效率 导读 翻译团队:星耀队@知数堂 团队成员:星耀队-芬达,星耀队-顺子,星耀队-M哥 原文出处:https://www.percona.com/blog ...

  8. java怎么查询千万数据,从java方面,在一个千万级的数据库查寻中,如何提高查询效率?...

    从java方面,在一个千万级的数据库查寻中,如何提高查询效率? 更多相关问题 请分析下面的歌曲<沂蒙山我的娘亲亲>片段中采用了那种长音或休止处的处理方法faea48d2d30c3b221e ...

  9. 【ElasticSearch】ElasticSearch在数十亿级别数据下,如何提高查询效率? 性能优化

    1.概述 转载:https://zhuanlan.zhihu.com/p/60458049 这里面主要有个filesystem cache 服务这个想法很好. 面试题 es 在数据量很大的情况下(数十 ...

最新文章

  1. iOS开发系列--C语言之存储方式和作用域
  2. mysql数据类型不写(),MYSQL 数据类型
  3. 为应用“瘦身”!给 Android 应用开发者的十个建议(转)
  4. android studio配置java_android studio配置Javah 和ndk-build
  5. 一文带你了解如何打造持续学习文化
  6. 联想gen系列服务器,Hpe Microserver Gen10 Plus开箱
  7. xmind 模板_XMind 教程 | 如何写出让人眼前一亮的年终总结?
  8. Codeforces Round #401 (Div. 2) E. Hanoi Factory 栈
  9. JVM - 对象访问
  10. IP子网划分概念:IP地址,子网和网关配置——Vecloud
  11. 基于web的网上书城网站设计与实现(SpringBoot ,Vue,MySQL )
  12. “敬老孝亲颂家风 做美德传承人”主题实践
  13. PHP基础教程(一)PHP快速入门
  14. 【解决报错】failed to obtain JDBC Connection
  15. linux内核一直输出系统日志,系统日志出现大量:kernel: printk: xxxx messages suppressed...
  16. jQuery 和React
  17. 教你学会u盘重装win10系统,u盘系统盘安装win10
  18. 人生若只如初见时[收藏]
  19. 自然数幂和伯努利数(Bernoulli)
  20. Java判断字符串包含英文

热门文章

  1. (31)FPGA面试题系统最高速度计算方法
  2. 霍尔传感器和直流无刷电机
  3. 13.QT中控制台程序console相关设置
  4. python算法应用(二)——一些使用技巧
  5. input子系统分析二
  6. ubuntu下ffmpeg编译安装
  7. android存电话号码,如何从android中删除联系人的电话号码?
  8. java 修改txt_Java实现批量修改txt文件名称的方法示例
  9. mysql表的增删查改
  10. 《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes