oracle使用with as提高查询效率
经常在开发过程中会用到视图或组合查询的情况,但由于涉及表数据经常达到千万级别的笛卡尔积,而且一段查询时会反复调用,但结果输出往往不需要那么多,可以使用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提高查询效率相关推荐
- oracle 语句提高查询效率的方法
oracle 语句提高查询效率的方法 1:.. where column in(select * from ... where ...); 2:... where exists (select 'X' ...
- 自问自答——使用视图能提高查询效率么?
问:使用视图能提高查询效率么? 答:普通视图只是记录相当于把查询语句持久化了,下次再按照这个查询条件来查询一遍,只是添加了一个对多表关联更加方便的查询入口而已,并不能实际提高查询效率.通过物化视图可以 ...
- 千万级游标_在一个千万级的数据库查寻中,如何提高查询效率
在一个千万级的数据库查寻中,如何提高查询效率? 1)数据库设计方面: a.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. b.应尽量避免在 w ...
- ElasticSearch 在数十亿级别数据下,如何提高查询效率?
来源:https://zhuanlan.zhihu.com/p/60458049 面试题 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 面试官心理分析 这个问题是肯定要问的,说白了,就 ...
- ElasticSearch面试 - es 在数据量很大的情况下如何提高查询效率啊?
面试题 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 面试官心理分析 这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的.很多时 ...
- ES 在数据量很大的情况下如何提高查询效率
如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的. 很多时候数 ...
- mysql 虚拟列索引_使用MySQL 5.7虚拟列提高查询效率
原标题:使用MySQL 5.7虚拟列提高查询效率 导读 翻译团队:星耀队@知数堂 团队成员:星耀队-芬达,星耀队-顺子,星耀队-M哥 原文出处:https://www.percona.com/blog ...
- java怎么查询千万数据,从java方面,在一个千万级的数据库查寻中,如何提高查询效率?...
从java方面,在一个千万级的数据库查寻中,如何提高查询效率? 更多相关问题 请分析下面的歌曲<沂蒙山我的娘亲亲>片段中采用了那种长音或休止处的处理方法faea48d2d30c3b221e ...
- 【ElasticSearch】ElasticSearch在数十亿级别数据下,如何提高查询效率? 性能优化
1.概述 转载:https://zhuanlan.zhihu.com/p/60458049 这里面主要有个filesystem cache 服务这个想法很好. 面试题 es 在数据量很大的情况下(数十 ...
最新文章
- iOS开发系列--C语言之存储方式和作用域
- mysql数据类型不写(),MYSQL 数据类型
- 为应用“瘦身”!给 Android 应用开发者的十个建议(转)
- android studio配置java_android studio配置Javah 和ndk-build
- 一文带你了解如何打造持续学习文化
- 联想gen系列服务器,Hpe Microserver Gen10 Plus开箱
- xmind 模板_XMind 教程 | 如何写出让人眼前一亮的年终总结?
- Codeforces Round #401 (Div. 2) E. Hanoi Factory 栈
- JVM - 对象访问
- IP子网划分概念:IP地址,子网和网关配置——Vecloud
- 基于web的网上书城网站设计与实现(SpringBoot ,Vue,MySQL )
- “敬老孝亲颂家风 做美德传承人”主题实践
- PHP基础教程(一)PHP快速入门
- 【解决报错】failed to obtain JDBC Connection
- linux内核一直输出系统日志,系统日志出现大量:kernel: printk: xxxx messages suppressed...
- jQuery 和React
- 教你学会u盘重装win10系统,u盘系统盘安装win10
- 人生若只如初见时[收藏]
- 自然数幂和伯努利数(Bernoulli)
- Java判断字符串包含英文