oracle使用with as 提升查询效率
经常在开发过程中会用到视图或组合查询的情况,但由于涉及表数据经常达到千万级别的笛卡尔积,而且一段查询时会反复调用,但结果输出往往不需要那么多,可以使用with将过滤或处理后的结果先缓存到临时表(此处原理不太清楚,仅代表我的理解),可以大大提高查询效率
另外,WMSYS.WM_CONCAT 这个函数可以将查询结果某列多行拼接成一个结果,非常实用
示例:
/* 查询当前EOMS流程组及组织架构信息 create by Gemini.Liu 2014-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) archid from ultraprocess_sysgroup gp1,ultraprocess_sysgroup gp2 where 1=1 and gp1.group_parentid=gp2.group_id and (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 us3 where 1=1 and us1.user_id=us3.mgroup_userid and us2.group_id=us3.mgroup_groupid group by us2.group_intid ), --映射信息 dp_map as ( select hj.groupid,hj.processbaseschema from wf_app_dealprocess hj where 1=1 and hj.groupid is not null and hj.processbaseschema is not null and hj.edprocessaction<> 19 group 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 hj where 1=1 and info.baseid=hj.processbaseid and info.baseschema = hj.processbaseschema and 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 所属部门ID from dp_map,group_info,group_user where 1=1 and dp_map.groupid = group_info.group_intid and group_user.group_intid = group_info.group_intid
oracle使用with as 提升查询效率相关推荐
- 索引的使用—— 验证索引提升查询效率 || 避免索引失效 —— 全值匹配 /最左前缀法则/范围查询右边的列,不能使用索引/不要在索引列上进行运算操作/字符串不加单引号,造成索引失效
索引的使用 索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题 验证索引提升查询效率 查询速度很快,接近0s ,主要的原因是因为id为主键,有索 ...
- ORACLE数据库多表关联查询效率问题解决方案
ORACLE数据库多表关联查询效率问题解决方案 参考文章: (1)ORACLE数据库多表关联查询效率问题解决方案 (2)https://www.cnblogs.com/baib/p/5086777.h ...
- Elasticsearch如何提升查询效率
分析 面试官问这个问题,一般就是向要考校你是否真的用过Elasticsearch分布式搜索引擎,对于查询效率的优化有没有真正的应用场景. es这个东西,真正来说并没有想象中那么牛逼.很多时候数据量太大 ...
- oracle使用with as提高查询效率
经常在开发过程中会用到视图或组合查询的情况,但由于涉及表数据经常达到千万级别的笛卡尔积,而且一段查询时会反复调用,但结果输出往往不需要那么多,可以使用with将过滤或处理后的结果先缓存到临时表(此处原 ...
- 说明关系型数据库通过索引提升查询效率的背后原理
如果没有索引,数据库引擎需要通过全表扫描来查找数据,这会产生大量的磁盘IO. 关系型数据库使用B+树构建索引来加速加快查询.B+树是一种二叉查找树(每个节点的键值必须:比保存在左子树的任何键值都要大, ...
- MySql采用range分区可提升查询效率
简介: RANGE分区基于一个给定的连续区间范围,早期版本RANGE主要是基于整数的分区.在5.7版本中DATE.DATETIME列也可以使用RANGE分区,同时在5.5以上的版本提供了基于非整形的R ...
- MySQL验证索引提升查询效率
在我们准备的表结构tb_item 中, 一共存储了 300 万记录: A. 根据ID查询 select * from tb_item where id = 1999\G; 查询速度很快, 接近0s , ...
- MySQL -通过调整索引提升查询效率
我们遇到的最容易引起困惑的问题就是索引列的顺序.正确的顺序依赖于使用该索引的查询,并且同时需要考虑如何更好地满足排序和分组的需要(顺便说明,本节内容适用于B-Tree索引:哈希或者其他类型的索引并不会 ...
- Java开发中的使用redis缓存提升查询效率
枚举类 public enum AppKey {/*** Redis Key 约定*/USER_SESSION("USER"),SYS_MENU("MENU") ...
- DB2性能优化 – 如何通过db2优化工具提升SQL查询效率
我们都知道,应用系统在运行一段时间后,用户报告系统运行会变慢,使他们不能完成所有的工作,完成事务和处理查询花费过长时间,或者应用程序在一天的某些时段变慢,要确定造成问题的本质原因,必须评估系统资源的实 ...
最新文章
- 获取窗口句柄模拟鼠标点击
- 微服务架构面试送送送命题!
- 蓝桥杯 试题 基础练习 十六进制转十进制——5行代码AC
- rufus中gpt和mrb磁盘_计算机关于磁盘的大杂烩
- 最囧的国庆,是一种怎样的体验?
- javascript总for of和for in的区别?
- 计算机专业盲打,在win7系统电脑练习盲打的方法
- [Java] 蓝桥杯BASIC-19 基础练习 完美的代价
- 【2022】安装神通数据库及DataGrip连接
- 深度学习C++代码配套教程(1. 总述)
- Java 开发之微信(支付宝)扫码支付的小总结
- 适合高中生看的科普类书籍,助力一窥科学世界
- 程序员试用期提离职被领导起诉
- 好用的天气预报API推荐
- fmt:formatDate标签的输出格式
- C# 字符串中去掉换行符、间隔符等特殊字符
- 西班牙首相被中国新零售圈粉!天猫总裁靖捷透露了一个“合伙人计划”
- 多路选择器——Verilog HDL语言
- 自动化测试:Monkey环境的搭建(windows)
- python定义函数练习题_python练习题