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

    注:本文来源:远方的守望者  <oracle提高查询效率的34条方法> oracle提高查询效率的34条方法 1.选择最有效率的表名顺序 (只在基于规则的优化器中有效): ORACLE的解 ...

  2. oracle提高查询效率的34个方面全解析

    oracle提高查询效率的34个方面全解析   在一个数据库中进行操作的时候,效率是很重要的,那么,如何提高oracle的查询效率呢?笔者将从以下几个方面进行详细解析: 1.选择最有效率的表名顺序(只 ...

  3. SQL 提高查询效率

    1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试, ...

  4. 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。

    在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计.SQL语句.java等层面的解决方案. 解答: 1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 whe ...

  5. Lucene4.6查询时完全跳过打分,提高查询效率的实现方式

    由于索引的文件量比较大,而且应用中不需要对文档进行打分,只需要查询出所有满足条件的文档.所以需要跳过打分来提高查询效率.一开始想用ConstantScoreQuery,但是测试发现这个类虽然让所有返回 ...

  6. ArcGIS Engine 创建索引(属性索引)——提高查询效率

    转自原文 ArcGIS Engine 创建索引(属性索引)——提高查询效率 众所周知,建立索引可以提高查询的效率,当对FeatureClass中的某一列频繁的查找,且数据量比较大时,建立索引是非常有必 ...

  7. SQL提高查询效率的几点建议

    1.如果要用子查询,那就用EXISTS替代IN.用NOT EXISTS替代NOT IN.因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高.无论在哪种情况下,NOT IN都 ...

  8. oracle分区技术提高查询效率

    概述: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件 ...

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

    最近在做项目中遇到多表关联查询排序的效率问题(5张以上40W+数据的表),查询一次大概要20多秒,经过一番苦思冥想,处理方案如下: 1.软件设计初期,需要一对一关联的表应该设计在一张大表里,这样虽然字 ...

随机推荐

  1. System.Action的使用(lambda 表达式)

    对于Action的使用方法使用如下: namespace ConsoleApp1 { class Program { static void Main(string[] args) { string ...

  2. IDEA内置Git管理

    总结:     1.要想用git管理项目,先要将本地项目与git关联,才能进行commit.push.pull等操作:     2.将本地项目于git关联后,本地仓库的地址默认就是项目地址:     ...

  3. Eclipse快捷键 10个最有用的快捷键(转载收藏)

    原文连接:https://www.cnblogs.com/iamfy/archive/2012/07/11/2586869.html Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级 ...

  4. Javassm连接数据库报错129 ERROR [com.alibaba.druid.pool.DruidDataSource] - {dataSource-1} init error

    Javassm连接数据库报错129 ERROR [com.alibaba.druid.pool.DruidDataSource] - {dataSource-1} init error 发现jdbc这 ...

  5. python爬虫简单代码爬取郭德纲单口相声

    搜索老郭的单口相声,打开检查模式,刷新 没有什么有价值的东东, 不过....清掉内容, 点击一个相声,再看看有些什么 是不是发现了些什么 我们来点击这个看看, 首先看一下headers, 这个url是 ...

  6. blfs(systemd版本)学习笔记-配置远程连接显示中文

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 远程连接的lfs系统需要具备以下环境便可在xshell或其他远程终端上面显示中文: 1.lfs主机设置中文编码(需要配置) 2. ...

  7. windows使用笔记-安装64位windows7家庭普通版的方法

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 从msdn网站:http://msdn.itellyou.cn/ 下载<cn_windows_7_ultimate_wit ...

  8. 【代码笔记】Web-JavaScript-JavaScript语句

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  9. 免费工资总额管控系统-JXHR2016

    •工资总额是指按照国家统计局规定的统计口径或企业规定,在一定时期内支付给各类用工的劳动报酬总额 •工资总额,即基本工资,包括岗位工资.各项津补贴 •JXHR2016以薪酬管控为核心,结合人力资源规划. ...

  10. Android--获取高清的app图标

    只有一个方法. public synchronized static Drawable getIconFromPackageName(String packageName, Context conte ...