经常在开发过程中会用到视图或组合查询的情况,但由于涉及表数据经常达到千万级别的笛卡尔积,而且一段查询时会反复调用,但结果输出往往不需要那么多,可以使用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 提升查询效率相关推荐

  1. 索引的使用—— 验证索引提升查询效率 || 避免索引失效 —— 全值匹配 /最左前缀法则/范围查询右边的列,不能使用索引/不要在索引列上进行运算操作/字符串不加单引号,造成索引失效

    索引的使用 索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题 验证索引提升查询效率 查询速度很快,接近0s ,主要的原因是因为id为主键,有索 ...

  2. ORACLE数据库多表关联查询效率问题解决方案

    ORACLE数据库多表关联查询效率问题解决方案 参考文章: (1)ORACLE数据库多表关联查询效率问题解决方案 (2)https://www.cnblogs.com/baib/p/5086777.h ...

  3. Elasticsearch如何提升查询效率

    分析 面试官问这个问题,一般就是向要考校你是否真的用过Elasticsearch分布式搜索引擎,对于查询效率的优化有没有真正的应用场景. es这个东西,真正来说并没有想象中那么牛逼.很多时候数据量太大 ...

  4. oracle使用with as提高查询效率

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

  5. 说明关系型数据库通过索引提升查询效率的背后原理

    如果没有索引,数据库引擎需要通过全表扫描来查找数据,这会产生大量的磁盘IO. 关系型数据库使用B+树构建索引来加速加快查询.B+树是一种二叉查找树(每个节点的键值必须:比保存在左子树的任何键值都要大, ...

  6. MySql采用range分区可提升查询效率

    简介: RANGE分区基于一个给定的连续区间范围,早期版本RANGE主要是基于整数的分区.在5.7版本中DATE.DATETIME列也可以使用RANGE分区,同时在5.5以上的版本提供了基于非整形的R ...

  7. MySQL验证索引提升查询效率

    在我们准备的表结构tb_item 中, 一共存储了 300 万记录: A. 根据ID查询 select * from tb_item where id = 1999\G; 查询速度很快, 接近0s , ...

  8. MySQL -通过调整索引提升查询效率

    我们遇到的最容易引起困惑的问题就是索引列的顺序.正确的顺序依赖于使用该索引的查询,并且同时需要考虑如何更好地满足排序和分组的需要(顺便说明,本节内容适用于B-Tree索引:哈希或者其他类型的索引并不会 ...

  9. Java开发中的使用redis缓存提升查询效率

    枚举类 public enum AppKey {/*** Redis Key 约定*/USER_SESSION("USER"),SYS_MENU("MENU") ...

  10. DB2性能优化 – 如何通过db2优化工具提升SQL查询效率

    我们都知道,应用系统在运行一段时间后,用户报告系统运行会变慢,使他们不能完成所有的工作,完成事务和处理查询花费过长时间,或者应用程序在一天的某些时段变慢,要确定造成问题的本质原因,必须评估系统资源的实 ...

最新文章

  1. 获取窗口句柄模拟鼠标点击
  2. 微服务架构面试送送送命题!
  3. 蓝桥杯 试题 基础练习 十六进制转十进制——5行代码AC
  4. rufus中gpt和mrb磁盘_计算机关于磁盘的大杂烩
  5. 最囧的国庆,是一种怎样的体验?
  6. javascript总for of和for in的区别?
  7. 计算机专业盲打,在win7系统电脑练习盲打的方法
  8. [Java] 蓝桥杯BASIC-19 基础练习 完美的代价
  9. 【2022】安装神通数据库及DataGrip连接
  10. 深度学习C++代码配套教程(1. 总述)
  11. Java 开发之微信(支付宝)扫码支付的小总结
  12. 适合高中生看的科普类书籍,助力一窥科学世界
  13. 程序员试用期提离职被领导起诉
  14. 好用的天气预报API推荐
  15. fmt:formatDate标签的输出格式
  16. C# 字符串中去掉换行符、间隔符等特殊字符
  17. 西班牙首相被中国新零售圈粉!天猫总裁靖捷透露了一个“合伙人计划”
  18. 多路选择器——Verilog HDL语言
  19. 自动化测试:Monkey环境的搭建(windows)
  20. python定义函数练习题_python练习题

热门文章

  1. 吉他入门教程之吉他音阶训练——练习方法
  2. 科隆国际游戏展:戴尔与ALIENWARE展示创新电竞产品
  3. QT基础学习笔记 Demo06
  4. 取消全部呼叫转移代码_怎么取消呼叫转移-那些你不知道的功能,手机忘记带也能接电话,一个代码全搞定...
  5. elasticsearch自定义分词器---拼音分词器
  6. elasticsearch使用中文分词器和拼音分词器,自定义分词器
  7. Aria2 YAAW 使用说明
  8. Ansys SCDM基本操作
  9. win10磁盘管理教程
  10. 常用英语前缀和全部英语前缀——138个