问题是:当出现数据量特别大的时候,sql该如何优化,谢谢。
select t.cate_1_id,
max(t.supplier_count),
max(t.supplier_t_count),
max(t.supplier_a_count),
max(t_rate),
max(a_rate),
max(t.vcode_count),
max(vcode_rate),
max(t.supplier_l_count),
max(l_rate),
max(t.supplier_b_count),
max(b_rate),
max(t.examiner),
(select asset.name
from assetcategory asset
where asset.categoryid = t.cate_1_id),
max(t.category_name) as category_name,
max(t.parentcategoryid) as parentCode
from (with supplier_cnt as
(select count(cate_1_id) as cnt, cate_1_id
from (select distinct decode(get_latest_parent_bysubid(sp.prodtype_id),
null,
sp.prodtype_id,
get_latest_parent_bysubid(sp.prodtype_id)) cate_1_id,
sp.supplier_id
from t_rsp_supplier_basis sb
left join t_rsp_supplier_prodtype sp
on sb.supplier_id = sp.supplier_id
left join user_ u
on sb.user_id = u.userid
where 1 = 1) t
group by t.cate_1_id), supplier_status_cnt as (select count(cate_1_id) as cnt,
cate_1_id as prodtype_id,
manage_status
from (select distinct decode(get_latest_parent_bysubid(sp.prodtype_id),
null,
sp.prodtype_id,
get_latest_parent_bysubid(sp.prodtype_id)) cate_1_id,
sp.supplier_id,
sb.manage_status
from t_rsp_supplier_basis sb
left join t_rsp_supplier_prodtype sp
on sb.supplier_id =
sp.supplier_id
left join user_ u
on sb.user_id =
u.userid
where 1 = 1) t
group by t.cate_1_id,
t.manage_status), vcode_cnt as (select count(cate_1_id) as cnt,
cate_1_id as prodtype_id
from (select distinct decode(get_latest_parent_bysubid(sp.prodtype_id),
null,
sp.prodtype_id,
get_latest_parent_bysubid(sp.prodtype_id)) cate_1_id,
sp.supplier_id
from t_rsp_supplier_basis sb
left join t_rsp_supplier_prodtype sp
on sb.supplier_id =
sp.supplier_id
left join user_ u
on sb.user_id =
u.userid
where 1 = 1
and sb.vcode is not null
and sp.prodtype_id is not null) t
group by t.cate_1_id)
select decode(get_latest_parent_bysubid(ac.categoryid),
null,
ac.categoryid,
get_latest_parent_bysubid(ac.categoryid)) as category_2nd_code,
max(sp_cnt.cnt) as supplier_count,
max(sps_cnt_t.cnt) as supplier_t_count,
max(sps_cnt_a.cnt) as supplier_a_count,
decode(max(sp_cnt.cnt),
0,
'',
round((max(sps_cnt_t.cnt) / max(sp_cnt.cnt)) * 100, 2) || '%') as t_rate,
decode(max(sp_cnt.cnt),
0,
'',
(round((max(sps_cnt_a.cnt) / max(sp_cnt.cnt)) * 100, 2)) || '%') as a_rate,
max(v_cnt.cnt) as vcode_count,
decode(max(sp_cnt.cnt),
0,
'',
(round((max(v_cnt.cnt) / max(sp_cnt.cnt)) * 100, 2)) || '%') as vcode_rate,
max(sps_cnt_l.cnt) as supplier_l_count,
decode(max(sp_cnt.cnt),
0,
'',
round((max(sps_cnt_l.cnt) / max(sp_cnt.cnt)) * 100, 2) || '%') as l_rate,
max(sps_cnt_b.cnt) as supplier_b_count,
decode(max(sp_cnt.cnt),
0,
'',
round((max(sps_cnt_b.cnt) / max(sp_cnt.cnt)) * 100, 2) || '%') as b_rate,
get_examiner_by_prodtype(ac.categoryid, 11419) as examiner,
max(ac.name),
getassetcategory2(ac.categoryid) as category_name,
ac.categoryid,
max(ac.parentcategoryid) as parentcategoryid,
sp_cnt.cate_1_id
from ASSETCATEGORY ac
left join T_RSP_SUPPLIER_PRODTYPE rsp
on ac.categoryid = rsp.prodtype_id
left join T_RSP_SUPPLIER_BASIS sb
on rsp.supplier_id = sb.supplier_id
left join user_ u
on sb.user_id = u.userid
left join supplier_cnt sp_cnt
on sp_cnt.cate_1_id =
decode(get_latest_parent_bysubid(ac.categoryid),
null,
ac.categoryid,
get_latest_parent_bysubid(ac.categoryid))
left join supplier_status_cnt sps_cnt_t
on (sps_cnt_t.prodtype_id =
decode(get_latest_parent_bysubid(ac.categoryid),
null,
ac.categoryid,
get_latest_parent_bysubid(ac.categoryid)) and
sps_cnt_t.manage_status = 'T')
left join supplier_status_cnt sps_cnt_a
on (sps_cnt_a.prodtype_id =
decode(get_latest_parent_bysubid(ac.categoryid),
null,
ac.categoryid,
get_latest_parent_bysubid(ac.categoryid)) and
sps_cnt_a.manage_status = 'A')
left join supplier_status_cnt sps_cnt_l
on (sps_cnt_l.prodtype_id =
decode(get_latest_parent_bysubid(ac.categoryid),
null,
ac.categoryid,
get_latest_parent_bysubid(ac.categoryid)) and
sps_cnt_l.manage_status = 'L')
left join supplier_status_cnt sps_cnt_b
on (sps_cnt_b.prodtype_id =
decode(get_latest_parent_bysubid(ac.categoryid),
null,
ac.categoryid,
get_latest_parent_bysubid(ac.categoryid)) and
sps_cnt_b.manage_status = 'B')
left join vcode_cnt v_cnt
on v_cnt.prodtype_id =
decode(get_latest_parent_bysubid(ac.categoryid),
null,
ac.categoryid,
get_latest_parent_bysubid(ac.categoryid))
where ac.categoryid not in
(select a.parentcategoryid from ASSETCATEGORY a)
group by sp_cnt.cate_1_id,
ac.categoryid) t
group by t.cate_1_id
其中get_latest_parent_bysubid(ac.categoryid) 是根据子节点获得所有一级节点。同时,也有数据是本身就是一级节点且无子节点。
相关推荐
通过指定起始点和连接条件,你可以遍历整个树形结构,获取层次关系的信息。 七、索引与性能优化 索引是提高查询速度的关键。Oracle支持多种类型的索引,如B树索引、位图索引、函数索引等。理解何时创建和使用索引,...
- **方法**: 在Form中构建树形结构的数据展示。 - **应用场景**: 复杂层级关系的数据管理。 28. **遍历数据块** - **方法**: 通过循环遍历数据块中的每一项。 - **应用场景**: 数据处理或分析。 29. **LOV动态...
层次查询用于处理树形或分层数据,如组织结构或产品类别,通过CONNECT BY子句实现。 九、自治事务 自治事务是嵌套在主事务中的独立事务,有自己的提交和回滚能力,不影响外部事务的状态。 这些Oracle专题培训的...
3. **对象浏览器**:Toad提供了一个直观的树形结构,用于查看和管理数据库中的表、视图、存储过程、函数、索引、触发器等各种对象。 4. **查询编辑器**:这是Toad的核心功能之一,支持编写SQL语句,进行数据查询、...
此外,它还支持分页、合并单元格、树形结构显示等高级功能,便于用户在复杂的数据环境中操作。 2. **报表设计**:Rave 5.1的报表设计功能强大,支持多种类型的报表,如列表、表格、图表、交叉表等。用户可以利用...
- 浏览器提供了一个树形结构来展示数据库对象。 - 可以展开节点查看具体对象的详细信息。 ##### 15.2 浏览器过滤器 - 通过过滤器可以隐藏不关心的对象类型。 - 例如,只显示表而不显示视图。 ##### 15.3 浏览器...
实例020 以树形显示的程序界面 20 实例021 动态按钮的窗体界面 21 1.6 特殊形状的窗体 23 实例022 非矩形窗体 23 实例023 建立字体形状窗体 24 实例024 控件随窗体自动调整 25 实例025 带分隔栏的窗体 25 ...
- **层次模型**:以树形结构表示数据,只有一个根节点。 - **网状模型**:呈现出交叉关系的网络结构,允许多个从属关系。 - **关系模型(Relational Model)**:最常用的数据模型,数据以二维表格形式表示。 - *...
52 <br>0069 求最大公约数 52 <br>0070 求最小公倍数 53 <br>0071 判断素数的算法 53 <br>0072 如何判断一个数是否是完数 54 <br>0073 歌德巴赫猜想的算法 54 <br>0074 八皇后问题 ...
**2.1 显示树形结构** - **实现方法**: 1. 在Maximo中创建或编辑对象时,使用树形结构控件。 2. 设置控件属性,如根节点、节点展开行为等。 **2.2 屏蔽工作流发送界面上的“重新分配”按钮** - **实现步骤**: ...
- **TreeView**:用于展示树形结构的数据。 #### 五、PowerBuilder数据窗口操作 - **数据窗口概述**: - 数据窗口是PowerBuilder的核心组件之一,用于显示、编辑和操作数据。 - 包括数据窗口画笔、数据窗口分类...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...