with as +分析函数优化自链接
2014-07-17 09:42
274 查看
select para_id from dwf.f_Savc_Buscode b where b.Para_Id = (SELECT MIN(Para_Id) FROM Dwf.f_Savc_Buscode WHERE Bus_Code = b.Bus_Code); SQL> set linesize 200 SQL> set pagesize 200 SQL> explain plan for select para_id from dwf.f_Savc_Buscode b where b.Para_Id = (SELECT MIN(Para_Id) FROM Dwf.f_Savc_Buscode WHERE Bus_Code = b.Bus_Code); 2 3 4 5 Explained. SQL> select * from table(dbms_xplan.display()); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Plan hash value: 1952012934 ---------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 86 | 2924 | 7 (15)| 00:00:01 | |* 1 | HASH JOIN | | 86 | 2924 | 7 (15)| 00:00:01 | | 2 | VIEW | VW_SQ_1 | 86 | 2236 | 4 (25)| 00:00:01 | | 3 | HASH GROUP BY | | 86 | 688 | 4 (25)| 00:00:01 | | 4 | INDEX FAST FULL SCAN| SYS_C0036092 | 435 | 3480 | 3 (0)| 00:00:01 | | 5 | INDEX FAST FULL SCAN | SYS_C0036092 | 435 | 3480 | 3 (0)| 00:00:01 | ---------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - access("B"."PARA_ID"="MIN(PARA_ID)" AND "ITEM_1"="B"."BUS_CODE") 17 rows selected. 改写为with as 后: with A as (select para_id,min(Para_Id) over(partition by Bus_Code) min_para_id from Dwf.f_Savc_Buscode) select para_id from A where A.para_id=a.min_para_id SQL> explain plan for with A as (select para_id,min(Para_Id) over(partition by Bus_Code) min_para_id from Dwf.f_Savc_Buscode) select para_id from A where A.para_id=a.min_para_id 2 3 ; Explained. SQL> select * from table(dbms_xplan.display()); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Plan hash value: 1562643515 --------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 435 | 11310 | 4 (25)| 00:00:01 | |* 1 | VIEW | | 435 | 11310 | 4 (25)| 00:00:01 | | 2 | WINDOW SORT | | 435 | 3480 | 4 (25)| 00:00:01 | | 3 | INDEX FAST FULL SCAN| SYS_C0036092 | 435 | 3480 | 3 (0)| 00:00:01 | --------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("A"."PARA_ID"="A"."MIN_PARA_ID") 15 rows selected. SQL> select * from (with A as (select para_id,min(Para_Id) over(partition by Bus_Code) min_para_id from Dwf.f_Savc_Buscode) select para_id from A where A.para_id=a.min_para_id) minus select para_id from dwf.f_Savc_Buscode b where b.Para_Id = (SELECT MIN(Para_Id) FROM Dwf.f_Savc_Buscode WHERE Bus_Code = b.Bus_Code) 2 3 4 5 6 7 8 9 ; no rows selected
相关文章推荐
- sql语句的优化分析之一查询语句中左连接和函数效率分析比较
- SQL优化--使用分析函数
- 怎样使用复合索引优化一个分析函数SQL
- 使用Listagg分析函数优化wmsys.wm_concat
- 优化案例1---用分析函数优化优化执行计划中的FILTER以及标量子查询
- Intel平台下linux中 ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载
- JS优化与惰性载入函数实例分析
- 在优化listview,滑动停止时异步加载图片,absListView.findViewWithTag(i)返回值为null的原因分析
- SQL Server 第四堂课,创建存储过程。存储过程是一组编译在单个执行计划中的transact-SQL语句。存储过程相当于C#函数,可以允许模块化程序设计,允许更快执行如果某操作需要大量transct-SQL代码或需要重复执行,将在创建存储过程中对其进行分析和优化。
- SQL优化--使用分析函数
- Intel平台下linux中ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载
- 利用分析函数优化自连接
- 利用分析函数优化自连接
- SQL优化经典----利用分析函数优化自连接
- 用分析函数优化标量子查询
- Intel平台下linux中ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载
- WITH分析函数
- Linux下库函数动态链接过程分析
- 分析函数优化自关联2
- 创建新进程,就三个函数CreateProcessAsUser CreateProcessWithLogonW CreateProcessWithTokenW(附网友的流程)