Oracle查询优化之减少统计的数据量
统计各部门人数很简单,通过部门分组即可,要统计部门以下下级部门的人数也简单,通过递归。要统计所有有下级部门的部门人数(包含下级)页比较简单,
先查询出有下级的部门,在对每个部门进行递归查询,如下:
select count(1) s ,b.b0200 from a01 a,
(select b0200 from b02 d where b0209=5 start with d.b0200=1 connect by prior d.b0200=d.b0203) b /*查询工会id为1的所有有下级的工会*/
where a.b0200 in (select b0200 from b02 d start with d.b0200=1 connect by prior d.b0200=d.b0203)
group by b.b0200
这个方法是最简单的,逻辑也很清楚,不过结果就不好了,简单的来说效率太低。300多万条数据执行时间已经难以想象了。
只有进行改进,减少数据量,一开始从上级开始统计数据量很大,那么就从下级开始统计减少数据量。即先统计最下级工会的第一个上级的人数,依次往上累加,这样的数据量就少了很多
select b.b0200, sum(s) from (
select b.b0203 as b0200,count(1) s from a01 a,(select b0200 ,b0203 from b02 b where b0209=0 start with b.b0200=1 connect by prior b.b0200=b.b0203) b
where a.b0200=b.b0200
group by b.b0203) a,(select b0200 from b02 d where b0209=5 start with d.b0200=1 connect by prior d.b0200=d.b0203) b/*查询工会id为1的所有有下级的工会*/
where a.b0200 in ( select b0200 from b02 c start with c.b0200=b.b0200 connect by prior c.b0200=c.b0203 )
group by b.b0200
此时的效果已经比上一次好了很多,花费15秒左右的时间
Oracle查询优化之减少统计的数据量的更多相关文章
- Mysql查询优化之 触发器加中间表 方法优化count()统计大数据量总数问题
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6138288.html 在上一篇博文我们提到,分页有三种方法.其中,第三种是我们最常用的.然而,在实际应用过程中 ...
- Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...
- oracle查询一个时间段每天的数据量
1.需求: 从所有数据中,查出一个时间段中每天的数据量,即:按日做汇总. 2.SQL语句模板: select trunc(date_col) date, sum(num_col) num, count ...
- ORACLE和SQL查询库数据量
ORACLE根据账号查询每张表数据量: select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC; SQL SE ...
- oracle 数据库下所有表结构、数据量及缺失值统计
表结构 SELECT t1.TABLE_NAME, t1.COLUMN_NAME, t1.DATA_TYPE || '(' || t1.DATA_LENGTH || ')', t2.COMMENTS ...
- (Oracle)数据量统计存储过程
本过程适用于Oracle数据量统计. create or replace procedure SP_GET_TAB_COUNT as v_tableName HDSD_TJ.Tablename%typ ...
- 查询优化百万条数据量的MySQL表
转自https://www.cnblogs.com/llzhang123/p/9239682.html 1.两种查询引擎查询速度(myIsam 引擎 ) InnoDB 中不保存表的具体行数,也就是说, ...
- 大数据量高并发的数据库优化,sql查询优化
一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. ...
- 【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)
原文地址:http://blog.csdn.net/zwan0518/article/details/11972853 目录(?)[-] 一查询优化 1创建索引 2缓存的配置 3slow_query_ ...
随机推荐
- Oracle语句执行顺序
- python中的网页标签等字符处理
# -*- coding: utf-8-*- import re ##过滤HTML中的标签 #将HTML中标签等信息去掉 #@param htmlstr HTML字符串. def filter_tag ...
- 原生node写一个静态资源服务器
myanywhere 用原生node做一个简易阉割版的anywhere静态资源服务器,以提升对node与http的理解. 相关知识 es6及es7语法 http的相关网络知识 响应头 缓存相关 压缩相 ...
- css 垂直居中方法总结
工作中遇到垂直居中问题,特此总结了一下几种方式与大家分享.本文讨论的垂直居中仅支持IE8+ 1.使用绝对定位垂直居中 HTML <div class="container"& ...
- 树状数组||归并排序求逆序对+离散化 nlogn
我好咸鱼. 归并排序之前写过,树状数组就是维护从后往前插入,找比现在插入的数大的数的数量. 如果值域大,可以离散化 #include <cstdio> #include <cstri ...
- xml01 验证
xml 验证 拥有正确的格式的xml是"形势良好"的xml 通过DTD验证的xml是"合法的"xml
- daning links 系列
1001 Easy Finding POJ-3740 1002 Power Stations HDOJ-3663 1003 Treasure Map ZOJ-3209 1004 Lamp HDOJ-2 ...
- arp与免费arp的差别,arp老化
免费arp:应用场景: case1:PC通过DHCP申请地址.在获取到IP地址后,会发送免费ARP,目的用于探測同一网段时候存在同样的IP地址终端,防止IP冲突. case2:PC的MAC地址发生变化 ...
- 用户体验之如何优化你的APP
用户体验,速度为王,来几个优化APP“速度”的建议. 1.后台执行 毋庸多言,已是通常做法. 一般在执行下载任务时让其在后台运营,让用户有精力去做别的事情. 后端加载 2.提前显示 客户端与WEB的数 ...
- Codeforces Round #260 (Div. 1) 455 A. Boredom (DP)
题目链接:http://codeforces.com/problemset/problem/455/A A. Boredom time limit per test 1 second memory l ...