1. select
  2. aa.acct_org,
  3. aa.loan_acct_no,
  4. aa.FUNCTIONARY,
  5. aa.cust_no,
  6. sum(dwm.pkg_tools.currcdtran(bb.INTT,aa.trans_cur_cd,'T00CNY','2014-02-10')) as jtlx
  7. from dwf.F_AGT_LONC_BASIC_INFO_H aa
  8. left join dwf.f_agt_comr_intdist_h bb
  9. on aa.loan_acct_no=bb.agmt_id
  10. and bb.dw_data_dt>=to_date('2014-01-01','yyyy-mm-dd')
  11. and bb.dw_data_dt<=to_date('2014-02-10','yyyy-mm-dd')
  12. where aa.start_dt<=to_date('2014-02-10','yyyy-mm-dd')
  13. and aa.end_dt>to_date('2014-02-10','yyyy-mm-dd')
  14. and aa.trans_cur_cd<>'T00CNY'
  15. group by aa.acct_org,aa.loan_acct_no,aa.FUNCTIONARY,aa.cust_no
  16. having sum(bb.payable_int_amt)<>0;
  17.  
  18. Plan hash value: 2421779894
  19.  
  20. ------------------------------------------------------------------------------------------------
  21. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
  22. ------------------------------------------------------------------------------------------------
  23. | 0 | SELECT STATEMENT | | 1483K| 192M| 3883K (2)| 12:56:39 |
  24. |* 1 | FILTER | | | | | |
  25. | 2 | HASH GROUP BY | | 1483K| 192M| 3883K (2)| 12:56:39 |
  26. |* 3 | HASH JOIN OUTER | | 1483K| 192M| 3883K (2)| 12:56:38 |
  27. |* 4 | TABLE ACCESS FULL| F_AGT_LONC_BASIC_INFO_H | 615 | 48585 | 4303 (2)| 00:00:52 |
  28. |* 5 | TABLE ACCESS FULL| F_AGT_COMR_INTDIST_H | 53M| 2929M| 3878K (2)| 12:55:42 |
  29. ------------------------------------------------------------------------------------------------
  30.  
  31. Predicate Information (identified by operation id):
  32. ---------------------------------------------------
  33.  
  34. 1 - filter(SUM("BB"."PAYABLE_INT_AMT")<>0)
  35. 3 - access("AA"."LOAN_ACCT_NO"="BB"."AGMT_ID"(+))
  36. 4 - filter("AA"."START_DT"<=TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd
  37. hh24:mi:ss') AND "AA"."END_DT">TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd
  38. hh24:mi:ss') AND "AA"."TRANS_CUR_CD"<>'T00CNY')
  39. 5 - filter("BB"."DW_DATA_DT"(+)<=TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd
  40. hh24:mi:ss') AND "BB"."DW_DATA_DT"(+)>=TO_DATE(' 2014-01-01 00:00:00', 'syyyy-mm-dd
  41. hh24:mi:ss'))
  42.  
  43. Note
  44. -----
  45. - dynamic sampling used for this statement (level=2)
  46.  
  47. create index f_agt_comr_intdist_h_idx2 on f_agt_comr_intdist_h(agmt_id,intt,payable_int_amt,dw_data_dt) tablespace EDWFIDXTBS nologging parallel 8
  48.  
  49. select
  50. aa.acct_org,
  51. aa.loan_acct_no,
  52. aa.FUNCTIONARY,
  53. aa.cust_no,
  54. sum(dwm.pkg_tools.currcdtran(bb.INTT,aa.trans_cur_cd,'T00CNY','2014-02-10')) as jtlx
  55. from dwf.F_AGT_LONC_BASIC_INFO_H aa
  56. left join dwf.f_agt_comr_intdist_h bb
  57. on aa.loan_acct_no=bb.agmt_id
  58. and bb.dw_data_dt>=to_date('2014-01-01','yyyy-mm-dd')
  59. and bb.dw_data_dt<=to_date('2014-02-10','yyyy-mm-dd')
  60. where aa.start_dt<=to_date('2014-02-10','yyyy-mm-dd')
  61. and aa.end_dt>to_date('2014-02-10','yyyy-mm-dd')
  62. and aa.trans_cur_cd<>'T00CNY'
  63. group by aa.acct_org,aa.loan_acct_no,aa.FUNCTIONARY,aa.cust_no
  64. having sum(bb.payable_int_amt)<>0;
  65.  
  66. Plan hash value: 2166463325
  67.  
  68. ----------------------------------------------------------------------------------------------------------------------------------------
  69. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
  70. ----------------------------------------------------------------------------------------------------------------------------------------
  71. | 0 | SELECT STATEMENT | | 1483K| 192M| 155K (1)| 00:31:09 | | | |
  72. | 1 | PX COORDINATOR FORCED SERIAL | | | | | | | | |
  73. | 2 | PX SEND QC (RANDOM) | :TQ10002 | 1483K| 192M| 155K (1)| 00:31:09 | Q1,02 | P->S | QC (RAND) |
  74. |* 3 | FILTER | | | | | | Q1,02 | PCWC | |
  75. | 4 | HASH GROUP BY | | 1483K| 192M| 155K (1)| 00:31:09 | Q1,02 | PCWP | |
  76. | 5 | PX RECEIVE | | 1483K| 192M| 155K (1)| 00:31:09 | Q1,02 | PCWP | |
  77. | 6 | PX SEND HASH | :TQ10001 | 1483K| 192M| 155K (1)| 00:31:09 | Q1,01 | P->P | HASH |
  78. | 7 | HASH GROUP BY | | 1483K| 192M| 155K (1)| 00:31:09 | Q1,01 | PCWP | |
  79. | 8 | NESTED LOOPS OUTER | | 1483K| 192M| 155K (1)| 00:31:08 | Q1,01 | PCWP | |
  80. | 9 | BUFFER SORT | | | | | | Q1,01 | PCWC | |
  81. | 10 | PX RECEIVE | | | | | | Q1,01 | PCWP | |
  82. | 11 | PX SEND ROUND-ROBIN| :TQ10000 | | | | | | S->P | RND-ROBIN |
  83. |* 12 | TABLE ACCESS FULL | F_AGT_LONC_BASIC_INFO_H | 615 | 48585 | 4303 (2)| 00:00:52 | | | |
  84. |* 13 | INDEX RANGE SCAN | F_AGT_COMR_INTDIST_H_IDX2 | 2412 | 134K| 284 (1)| 00:00:04 | Q1,01 | PCWP | |
  85. ----------------------------------------------------------------------------------------------------------------------------------------
  86.  
  87. Predicate Information (identified by operation id):
  88. ---------------------------------------------------
  89.  
  90. 3 - filter(SUM(SYS_OP_CSR(SYS_OP_MSR(SUM("BB"."PAYABLE_INT_AMT"),SUM("PKG_TOOLS"."CURRCDTRAN"("BB"."INTT","AA"."TRANS_CUR_CD"
  91. ,'T00CNY','2014-02-10'))),0))<>0)
  92. 12 - filter("AA"."START_DT"<=TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "AA"."END_DT">TO_DATE(' 2014-02-10
  93. 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "AA"."TRANS_CUR_CD"<>'T00CNY')
  94. 13 - access("AA"."LOAN_ACCT_NO"="BB"."AGMT_ID"(+) AND "BB"."DW_DATA_DT"(+)>=TO_DATE(' 2014-01-01 00:00:00', 'syyyy-mm-dd
  95. hh24:mi:ss') AND "BB"."DW_DATA_DT"(+)<=TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
  96. filter("BB"."DW_DATA_DT"(+)<=TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
  97. "BB"."DW_DATA_DT"(+)>=TO_DATE(' 2014-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
  98.  
  99. Note
  100. -----
  101. - dynamic sampling used for this statement (level=2)
  102.  
  103. alter index f_agt_comr_intdist_h_idx2 noparallel;
  104.  
  105. 关闭并行后:
  106. Plan hash value: 2676048883
  107.  
  108. --------------------------------------------------------------------------------------------------
  109. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
  110. --------------------------------------------------------------------------------------------------
  111. | 0 | SELECT STATEMENT | | 1483K| 192M| 155K (1)| 00:31:09 |
  112. |* 1 | FILTER | | | | | |
  113. | 2 | HASH GROUP BY | | 1483K| 192M| 155K (1)| 00:31:09 |
  114. | 3 | NESTED LOOPS OUTER| | 1483K| 192M| 155K (1)| 00:31:08 |
  115. |* 4 | TABLE ACCESS FULL| F_AGT_LONC_BASIC_INFO_H | 615 | 48585 | 4303 (2)| 00:00:52 |
  116. |* 5 | INDEX RANGE SCAN | F_AGT_COMR_INTDIST_H_IDX2 | 2412 | 134K| 284 (1)| 00:00:04 |
  117. --------------------------------------------------------------------------------------------------
  118.  
  119. Predicate Information (identified by operation id):
  120. ---------------------------------------------------
  121.  
  122. 1 - filter(SUM("BB"."PAYABLE_INT_AMT")<>0)
  123. 4 - filter("AA"."START_DT"<=TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd hh24:mi:ss')
  124. AND "AA"."END_DT">TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
  125. "AA"."TRANS_CUR_CD"<>'T00CNY')
  126. 5 - access("AA"."LOAN_ACCT_NO"="BB"."AGMT_ID"(+) AND "BB"."DW_DATA_DT"(+)>=TO_DATE('
  127. 2014-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "BB"."DW_DATA_DT"(+)<=TO_DATE('
  128. 2014-02-10 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
  129. filter("BB"."DW_DATA_DT"(+)<=TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd
  130. hh24:mi:ss') AND "BB"."DW_DATA_DT"(+)>=TO_DATE(' 2014-01-01 00:00:00', 'syyyy-mm-dd
  131. hh24:mi:ss'))
  132.  
  133. Note
  134. -----
  135. - dynamic sampling used for this statement (level=2)
  136.  
  137. 大表必须放在被驱动表上,走NL循环.
  138.  
  139. Index fast full scan呢?
  140. explain plan for select /*+ index_ffs(bb F_AGT_COMR_INTDIST_H_IDX2)*/
  141. aa.acct_org,
  142. aa.loan_acct_no,
  143. aa.FUNCTIONARY,
  144. aa.cust_no,
  145. sum(dwm.pkg_tools.currcdtran(bb.INTT,aa.trans_cur_cd,'T00CNY','2014-02-10')) as jtlx
  146. from dwf.F_AGT_LONC_BASIC_INFO_H aa
  147. left join dwf.F_AGT_COMR_INTDIST_H bb
  148. on aa.loan_acct_no=bb.agmt_id
  149. and bb.dw_data_dt>=to_date('2014-01-01','yyyy-mm-dd')
  150. and bb.dw_data_dt<=to_date('2014-02-10','yyyy-mm-dd')
  151. where aa.start_dt<=to_date('2014-02-10','yyyy-mm-dd')
  152. and aa.end_dt>to_date('2014-02-10','yyyy-mm-dd')
  153. and aa.trans_cur_cd<>'T00CNY'
  154. group by aa.acct_org,aa.loan_acct_no,aa.FUNCTIONARY,aa.cust_no
  155. having sum(bb.payable_int_amt)<>0;
  156.  
  157. Plan hash value: 2940667986
  158.  
  159. -----------------------------------------------------------------------------------------------------
  160. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
  161. -----------------------------------------------------------------------------------------------------
  162. | 0 | SELECT STATEMENT | | 1483K| 192M| 1203K (2)| 04:00:44 |
  163. |* 1 | FILTER | | | | | |
  164. | 2 | HASH GROUP BY | | 1483K| 192M| 1203K (2)| 04:00:44 |
  165. |* 3 | HASH JOIN OUTER | | 1483K| 192M| 1203K (2)| 04:00:43 |
  166. |* 4 | TABLE ACCESS FULL | F_AGT_LONC_BASIC_INFO_H | 615 | 48585 | 4303 (2)| 00:00:52 |
  167. |* 5 | INDEX FAST FULL SCAN| F_AGT_COMR_INTDIST_H_IDX2 | 53M| 2929M| 1198K (2)| 03:59:47 |
  168. -----------------------------------------------------------------------------------------------------
  169.  
  170. Predicate Information (identified by operation id):
  171. ---------------------------------------------------
  172.  
  173. 1 - filter(SUM("BB"."PAYABLE_INT_AMT")<>0)
  174. 3 - access("AA"."LOAN_ACCT_NO"="BB"."AGMT_ID"(+))
  175. 4 - filter("AA"."START_DT"<=TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
  176. "AA"."END_DT">TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
  177. "AA"."TRANS_CUR_CD"<>'T00CNY')
  178. 5 - filter("BB"."DW_DATA_DT"(+)<=TO_DATE(' 2014-02-10 00:00:00', 'syyyy-mm-dd
  179. hh24:mi:ss') AND "BB"."DW_DATA_DT"(+)>=TO_DATE(' 2014-01-01 00:00:00', 'syyyy-mm-dd
  180. hh24:mi:ss'))
  181.  
  182. Note
  183. -----
  184. - dynamic sampling used for this statement (level=2)

创建组合索引SQL从1个多小时到1S的案例的更多相关文章

  1. 组合索引leaf 数据存储

    1 Z 2 X 3 U 4 T 5 G 6 F 7 C 8 B 9 A 1 A 2 B 3 C 4 D Oracle的索引是以平衡树的方式组织存储的:保存的是索引列的值,以及该行的rowid的一部分( ...

  2. MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划

    这篇文章主要介绍了MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关资料,需要的朋友可以参考下 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存 ...

  3. MongoDB 创建基础索引、组合索引、唯一索引以及优化

    一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引 ...

  4. [慢查优化]建索引时注意字段选择性 & 范围查询注意组合索引的字段顺序

    文章转自:http://www.cnblogs.com/zhengyun_ustc/p/slowquery2.html 写在前面的话: 之前曾说过"不要求每个人一定理解 联表查询(join/ ...

  5. mysql组合索引与字段顺序

    很多时候,我们在mysql中创建了索引,但是某些查询还是很慢,根本就没有使用到索引!一般来说,可能是某些字段没有创建索引,或者是组合索引中字段的顺序与查询语句中字段的顺序不符. 看下面的例子:假设有一 ...

  6. [转]mysql组合索引与字段顺序

    下列转自:http://www.tech-q.cn/archiver/tid-11673.html 很多时候,我们在mysql中创建了索引,但是某些查询还是很慢,根本就没有使用到索引!一般来说,可能是 ...

  7. mysql组合索引的有序性<转>

    昨天同事关于军规里的一条mysql索引的问题咨询我,才发现自己也不太了解组合索引的规则.于是来记录一下: [推荐]如果有order by的场景,请注意利用索引的有序性.order by 最后的字段是组 ...

  8. Oracle中组合索引的使用详解(转)

    在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引.在组合索引的使用方面,Oracle有以下特点: 1. 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的w ...

  9. oracle 如何预估将要创建的索引的大小

    一.1  oracle 如何预估将要创建的索引的大小 oracle 提供了2种可以预估将要创建的索引大小的办法: ①  利用包 Dbms_space.create_index_cost 直接得到 ②  ...

随机推荐

  1. 双系统如何正确的使用修复BCD工具分享

    安装双系统时候,用于种种原因会导致开机启动只显示一个系统,此时需要修复下BCD即可. 下面介绍下两个修复BCD工具软件: 1.easybcd(双系统引导修复工具) v2.2.0.182 汉化版 下载地 ...

  2. [C++] [算法] KMP算法

    KMP串匹配算法是一个经典的算法. 传统BF算法是传统的字符串匹配算法.很好理解.叶实现.但时间复杂度太高. 本文将从字符串模式字符串被称为.为了匹配字符串被称为主弦. KMP配时能够少移动从串的位置 ...

  3. [转] boost.circular_buffer简介

    http://www.cnblogs.com/TianFang/archive/2013/02/05/2892503.html 很多时候,我们需要在内存中记录最近一段时间的数据,如操作记录等.由于这部 ...

  4. JNI之本地线程进入c层

    在JNI开发中有时候会遇到在c层创建小线程的情况.从本质来讲,java线程和c线程都是请求kerner获取的,只是一段执行序列.从这个角度看,线程并没有什么不同,java线程和c线程可以通用. 然而在 ...

  5. 关于Linux的缓存内存 Cache Memory详解<转>

    转自 http://www.ha97.com/4337.html PS:前天有童鞋问我,为啥我的Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存 ...

  6. supervisor 部署文档

    supervisor 部署文档 supervisor 需要Python支持,如果不用系统的supervisor,单独安装python python 安装 #依赖 yum install python- ...

  7. Python开发【第九篇】:HTML (二)

    python[第十四篇]HTML基础 时间:2016-08-08 20:57:27      阅读:49      评论:0      收藏:0      [点我收藏+] 标签: 什么是HTML? H ...

  8. mysql复习增删改查

    select * from torder where status='退款申请' UPDATE torder SET `status`='退款申请' WHERE status='等待付款' and i ...

  9. "javascript:void(0)"用法

    1.window.open(''url'') 2.用自定义函数 <script> function openWin(tag,obj) { obj.target="_blank&q ...

  10. JS 改变input 输入框样式

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...