SQL> select a.unit3_code 机构编码, 2 a.unit3_name 机构名称, 3 a.dept1_code 部门编码, 4 a.dept1_name 部门名称, 5 a.mgr_code 客户经理编码, 6 a.mgr_name 客户经理名称, 7 b.base 基数 8 from s_pm_mgr_dept_rela a, 9 (select t2.mgr_code, sum(T1.avg * t2.share_rate / 100) / 10000 base 10 from (select acct_no_pk, 11 (SUM(DECODE(T1.DATA_DATE, '20121217', T1.Y_ADD_AF, 0)) - 12 SUM(DECODE(T1.DATA_DATE, '20120101', T1.Y_ADD_AF, 0)) + 13 SUM(DECODE(T1.DATA_DATE, 14 '20120101', 15 T1.ADJUST_AMT_AF, 16 0))) / 17 PKG_UF_BANK.FN_GETDAYS('20120101', '20121217') AVG 18 from t_pm_acct_dtl_af t1 19 where 1 = 1 20 and t1.data_date in ('20120101', '20121217') 21 and acct_flag = 'DEPOSIT' 22 and t1.cur_code = 1 23 and substr(flag, 1, 1) = '1' 24 and substr(flag, 4, 1) = '1' 25 and t1.dept1_code <> '999999999' 26 group by acct_no_pk) t1, 27 (select t3.acct_no_pk as acct_no_pk, 28 NVL(t2.cm_code, nvl(T3.MGR_CODE, 'xxxxxx')) as mgr_code, 29 decode(T1.SHARE_RATE, '', 100, T1.SHARE_RATE) as share_rate 30 from t_pm_acct_dtl t3, 31 bap_cm_account t1, 32 bap_cm_psndoc t2, 33 bap_nctobapdept t4 34 where 1 = 1 35 and t1.account(+) = t3.acct_no_pk 36 and decode(t1.seal_flag(+), '', 'N', t1.seal_flag(+)) = 'N' 37 and replace(t1.effect_date(+), '-') <= '20121217' 38 and replace(decode(t1.seal_date(+), 39 '', 40 pkg_uf_bank.FN_GETNEXTDAY('20121217', 41 'M'), 42 t1.seal_date(+)), 43 '-') > '20121217' 44 and decode(t1.dr(+), '', 0, t1.dr(+)) = 0 45 and t1.pk_cm_psndoc = t2 46 .pk_cm_psndoc(+) 47 and decode(t2.dr(+), '', 0, t2.dr(+)) = 0 48 and t2.pk_dept = t4.pk_nctobapdept(+) 49 and t4.deptcode(+) <> '999999999' 50 and t3.data_date = '20121217' 51 and t3.acct_flag = 'DEPOSIT') t2 52 Where t1.acct_no_pk = t2.acct_no_pk 53 group by t2.mgr_code) b 54 where a.mgr_code = b.mgr_code 55 and a.dept1_code <> '999999999' 56 and a.dept1_code = '18605' 57 and a.unit3_code = '18601' 58 and 1 = 1 59 and a.mgr_code IN ('00798', '00817') 60 order by 1, 3, 5 61 ; Execution Plan ---------------------------------------------------------- Plan hash value: 1749794338 ------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | ------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 288 | 11414 (15)| 00:00:33 | | | | 1 | SORT GROUP BY | | 1 | 288 | 11414 (15)| 00:00:33 | | | |* 2 | HASH JOIN OUTER | | 1 | 288 | 11413 (15)| 00:00:33 | | | |* 3 | FILTER | | | | | | | | | 4 | NESTED LOOPS OUTER | | 1 | 258 | 11408 (15)| 00:00:33 | | | | 5 | NESTED LOOPS OUTER | | 1 | 207 | 11407 (15)| 00:00:33 | | | | 6 | NESTED LOOPS | | 1 | 139 | 11402 (15)| 00:00:33 | | | | 7 | MERGE JOIN CARTESIAN | | 1 | 98 | 11398 (15)| 00:00:33 | | | | 8 | INLIST ITERATOR | | | | | | | | |* 9 | TABLE ACCESS BY INDEX ROWID | S_PM_MGR_DEPT_RELA | 1 | 63 | 3 (0)| 00:00:01 | | | |* 10 | INDEX RANGE SCAN | MGR_DEPT_RELA_IDX5 | 1 | | 2 (0)| 00:00:01 | | | | 11 | BUFFER SORT | | 93 | 3255 | 11396 (15)| 00:00:33 | | | | 12 | VIEW | | 93 | 3255 | 11396 (15)| 00:00:33 | | | | 13 | HASH GROUP BY | | 93 | 5487 | 11396 (15)| 00:00:33 | | | | 14 | PARTITION LIST INLIST | | 93 | 5487 | 11395 (15)| 00:00:33 |KEY(I) |KEY(I) | |* 15 | TABLE ACCESS FULL | T_PM_ACCT_DTL_AF | 93 | 5487 | 11395 (15)| 00:00:33 |KEY(I) |KEY(I) | | 16 | PARTITION LIST SINGLE | | 1 | 41 | 4 (0)| 00:00:01 | KEY | KEY | |* 17 | TABLE ACCESS BY LOCAL INDEX ROWID| T_PM_ACCT_DTL | 1 | 41 | 4 (0)| 00:00:01 | 352 | 352 | |* 18 | INDEX RANGE SCAN | ACCT_DTL_IDX1 | 2 | | 2 (0)| 00:00:01 | 352 | 352 | |* 19 | TABLE ACCESS BY INDEX ROWID | BAP_CM_ACCOUNT | 1 | 68 | 5 (0)| 00:00:01 | | | |* 20 | INDEX RANGE SCAN | IDX_BAP_CM_ACCOUNT | 2 | | 2 (0)| 00:00:01 | | | |* 21 | TABLE ACCESS BY INDEX ROWID | BAP_CM_PSNDOC | 1 | 51 | 1 (0)| 00:00:01 | | | |* 22 | INDEX UNIQUE SCAN | PK_BAP_CM_PSNDOC | 1 | | 0 (0)| 00:00:01 | | | |* 23 | TABLE ACCESS FULL | BAP_NCTOBAPDEPT | 609 | 18270 | 4 (0)| 00:00:01 | | | ------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("T2"."PK_DEPT"="T4"."PK_NCTOBAPDEPT"(+)) 3 - filter("A"."MGR_CODE"=NVL("T2"."CM_CODE",NVL("T3"."MGR_CODE",'xxxxxx')) AND (NVL("T2"."CM_CODE",NVL("T3"."MGR_CODE",'xxxxxx'))='00798' OR NVL("T2"."CM_CODE",NVL("T3"."MGR_CODE",'xxxxxx'))='00817')) 9 - filter("A"."DEPT1_CODE"='18605' AND "A"."DEPT1_CODE"<>'999999999') 10 - access("A"."UNIT3_CODE"='18601' AND ("A"."MGR_CODE"='00798' OR "A"."MGR_CODE"='00817')) 15 - filter("ACCT_FLAG"='DEPOSIT' AND SUBSTR("FLAG",1,1)='1' AND SUBSTR("FLAG",4,1)='1' AND "T1"."DEPT1_CODE"<>'999999999' AND TO_NUMBER("T1"."CUR_CODE")=1) 17 - filter("T3"."ACCT_FLAG"='DEPOSIT') 18 - access("T3"."DATA_DATE"=20121217 AND "T1"."ACCT_NO_PK"="T3"."ACCT_NO_PK") 19 - filter(DECODE("T1"."SEAL_FLAG"(+),'','N',"T1"."SEAL_FLAG"(+))='N' AND REPLACE("T1"."EFFECT_DATE"(+),'-')<='20121217' AND DECODE(TO_CHAR("T1"."DR"(+)),'',0,"T1"."DR"(+))=0 AND REPLACE(DECODE("T1"."SEAL_DATE"(+),'',"PKG_UF_BANK"."FN_GETNEXTDAY"('20121217','M'),"T1"."SEAL_DATE"(+)),'-')>'20121217 ') 20 - access("T1"."ACCOUNT"(+)="T3"."ACCT_NO_PK") 21 - filter(DECODE(TO_CHAR("T2"."DR"(+)),'',0,"T2"."DR"(+))=0) 22 - access("T1"."PK_CM_PSNDOC"="T2"."PK_CM_PSNDOC"(+)) 23 - filter("T4"."DEPTCODE"(+)<>'999999999') Statistics ---------------------------------------------------------- 214 recursive calls 0 db block gets 11912102 consistent gets 122578 physical reads 13516 redo size 1064 bytes sent via SQL*Net to client 1625 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 2 sorts (memory) 0 sorts (disk) 2 rows processed select count(*) from S_PM_MGR_DEPT_RELA A where ("A"."UNIT3_CODE"='18601' AND ("A"."MGR_CODE"='00798' OR "A"."MGR_CODE"='00817')) and ("A"."DEPT1_CODE"='18605' AND "A"."DEPT1_CODE"<>'999999999'); ---返回2条记录 (select acct_no_pk, 11 (SUM(DECODE(T1.DATA_DATE, '20121217', T1.Y_ADD_AF, 0)) - 12 SUM(DECODE(T1.DATA_DATE, '20120101', T1.Y_ADD_AF, 0)) + 13 SUM(DECODE(T1.DATA_DATE, 14 '20120101', 15 T1.ADJUST_AMT_AF, 16 0))) / 17 PKG_UF_BANK.FN_GETDAYS('20120101', '20121217') AVG 18 from t_pm_acct_dtl_af t1 19 where 1 = 1 20 and t1.data_date in ('20120101', '20121217') 21 and acct_flag = 'DEPOSIT' 22 and t1.cur_code = 1 23 and substr(flag, 1, 1) = '1' 24 and substr(flag, 4, 1) = '1' 25 and t1.dept1_code <> '999999999' 26 group by acct_no_pk) t1 (select t3.acct_no_pk as acct_no_pk, 28 NVL(t2.cm_code, nvl(T3.MGR_CODE, 'xxxxxx')) as mgr_code, 29 decode(T1.SHARE_RATE, '', 100, T1.SHARE_RATE) as share_rate 30 from t_pm_acct_dtl t3, 31 bap_cm_account t1, 32 bap_cm_psndoc t2, 33 bap_nctobapdept t4 34 where 1 = 1 35 and t1.account(+) = t3.acct_no_pk 36 and decode(t1.seal_flag(+), '', 'N', t1.seal_flag(+)) = 'N' 37 and replace(t1.effect_date(+), '-') <= '20121217' 38 and replace(decode(t1.seal_date(+), 39 '', 40 pkg_uf_bank.FN_GETNEXTDAY('20121217', 41 'M'), 42 t1.seal_date(+)), 43 '-') > '20121217' 44 and decode(t1.dr(+), '', 0, t1.dr(+)) = 0 45 and t1.pk_cm_psndoc = t2 46 .pk_cm_psndoc(+) 47 and decode(t2.dr(+), '', 0, t2.dr(+)) = 0 48 and t2.pk_dept = t4.pk_nctobapdept(+) 49 and t4.deptcode(+) <> '999999999' 50 and t3.data_date = '20121217' 51 and t3.acct_flag = 'DEPOSIT') t2 | 12 | VIEW | | 93 | 3255 | 11396 (15)| 00:00:33 | | | | 13 | HASH GROUP BY | | 93 | 5487 | 11396 (15)| 00:00:33 | | | | 14 | PARTITION LIST INLIST | | 93 | 5487 | 11395 (15)| 00:00:33 |KEY(I) |KEY(I) | |* 15 | TABLE ACCESS FULL | T_PM_ACCT_DTL_AF | 93 | 5487 | 11395 (15)| 00:00:33 |KEY(I) |KEY(I) | | 16 | PARTITION LIST SINGLE | | 1 | 41 | 4 (0)| 00:00:01 | KEY | KEY | |* 17 | TABLE ACCESS BY LOCAL INDEX ROWID| T_PM_ACCT_DTL | 1 | 41 | 4 (0)| 00:00:01 | 352 | 352 | |* 18 | INDEX RANGE SCAN | ACCT_DTL_IDX1 | 2 | | 2 (0)| 00:00:01 | 352 | 352 | |* 19 | TABLE ACCESS BY INDEX ROWID | BAP_CM_ACCOUNT | 1 | 68 | 5 (0)| 00:00:01 | | | |* 20 | INDEX RANGE SCAN | IDX_BAP_CM_ACCOUNT | 2 | | 2 (0)| 00:00:01 | | | |* 21 | TABLE ACCESS BY INDEX ROWID | BAP_CM_PSNDOC | 1 | 51 | 1 (0)| 00:00:01 | | | |* 22 | INDEX UNIQUE SCAN | PK_BAP_CM_PSNDOC | 1 | | 0 (0)| 00:00:01 | | | |* 23 | TABLE ACCESS FULL | BAP_NCTOBAPDEPT | 609 | 18270 | 4 (0)| 00:00:01 | | | ------------------------------------------------------------------------------------------------------------------------------- 可以看到t1视图没有展开,但是t2视图确被展开了,尝试让t2视图不展开 SQL> select a.unit3_code 机构编码, 2 a.unit3_name 机构名称, 3 a.dept1_code 部门编码, 4 a.dept1_name 部门名称, 5 a.mgr_code 客户经理编码, 6 a.mgr_name 客户经理名称, 7 b.base 基数 8 from s_pm_mgr_dept_rela a, 9 (select /*+ no_merge(t2)*/ t2.mgr_code, sum(T1.avg * t2.share_rate / 100) / 10000 base 10 from (select acct_no_pk, 11 (SUM(DECODE(T1.DATA_DATE, '20121217', T1.Y_ADD_AF, 0)) - 12 SUM(DECODE(T1.DATA_DATE, '20120101', T1.Y_ADD_AF, 0)) + 13 SUM(DECODE(T1.DATA_DATE, 14 '20120101', 15 T1.ADJUST_AMT_AF, 16 0))) / 17 PKG_UF_BANK.FN_GETDAYS('20120101', '20121217') AVG 18 from t_pm_acct_dtl_af t1 19 where 1 = 1 20 and t1.data_date in ('20120101', '20121217') 21 and acct_flag = 'DEPOSIT' 22 and t1.cur_code = 1 23 and substr(flag, 1, 1) = '1' 24 and substr(flag, 4, 1) = '1' 25 and t1.dept1_code <> '999999999' 26 group by acct_no_pk) t1, 27 (select 28 t3.acct_no_pk as acct_no_pk, 29 NVL(t2.cm_code, nvl(T3.MGR_CODE, 'xxxxxx')) as mgr_code, 30 decode(T1.SHARE_RATE, '', 100, T1.SHARE_RATE) as share_rate 31 from t_pm_acct_dtl t3, 32 bap_cm_account t1, 33 bap_cm_psndoc t2, 34 bap_nctobapdept t4 35 where 1 = 1 36 and t1.account(+) = t3.acct_no_pk 37 and decode(t1.seal_flag(+), '', 'N', t1.seal_flag(+)) = 'N' 38 and replace(t1.effect_date(+), '-') <= '20121217' 39 and replace(decode(t1.seal_date(+), 40 '', 41 pkg_uf_bank.FN_GETNEXTDAY('20121217', 42 'M'), 43 t1.seal_date(+)), 44 '-') > '20121217' 45 and decode(t1.dr(+), '', 0, t1.dr(+)) = 0 46 and t1.pk_cm_psndoc = t2 47 .pk_cm_psndoc(+) 48 and decode(t2.dr(+), '', 0, t2.dr(+)) = 0 49 and t2.pk_dept = t4.pk_nctobapdept(+) 50 and t4.deptcode(+) <> '999999999' 51 and t3.data_date = '20121217' 52 and t3.acct_flag = 'DEPOSIT') t2 53 Where t1.acct_no_pk = t2.acct_no_pk 54 group by t2.mgr_code) b 55 where a.mgr_code = b.mgr_code 56 and a.dept1_code <> '999999999' 57 and a.dept1_code = '18605' 58 and a.unit3_code = '18601' 59 and 1 = 1 60 and a.mgr_code IN ('00798', '00817') 61 order by 1, 3, 5 62 ; Execution Plan ---------------------------------------------------------- Plan hash value: 74438866 ---------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | ---------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 150 | 19483 (14)| 00:00:57 | | | | 1 | SORT GROUP BY | | 1 | 150 | 19483 (14)| 00:00:57 | | | |* 2 | HASH JOIN | | 1 | 150 | 19482 (14)| 00:00:57 | | | |* 3 | HASH JOIN | | 1 | 115 | 8086 (13)| 00:00:24 | | | | 4 | INLIST ITERATOR | | | | | | | | |* 5 | TABLE ACCESS BY INDEX ROWID| S_PM_MGR_DEPT_RELA | 1 | 63 | 3 (0)| 00:00:01 | | | |* 6 | INDEX RANGE SCAN | MGR_DEPT_RELA_IDX5 | 1 | | 2 (0)| 00:00:01 | | | | 7 | VIEW | | 12519 | 635K| 8082 (13)| 00:00:24 | | | |* 8 | HASH JOIN RIGHT OUTER | | 12519 | 2322K| 8082 (13)| 00:00:24 | | | |* 9 | TABLE ACCESS FULL | BAP_NCTOBAPDEPT | 609 | 18270 | 4 (0)| 00:00:01 | | | |* 10 | FILTER | | | | | | | | |* 11 | HASH JOIN RIGHT OUTER | | 12519 | 1956K| 8077 (13)| 00:00:24 | | | |* 12 | TABLE ACCESS FULL | BAP_CM_PSNDOC | 84 | 4284 | 33 (10)| 00:00:01 | | | |* 13 | HASH JOIN RIGHT OUTER | | 629K| 65M| 8021 (12)| 00:00:24 | | | |* 14 | TABLE ACCESS FULL | BAP_CM_ACCOUNT | 1 | 68 | 5627 (12)| 00:00:17 | | | | 15 | PARTITION LIST SINGLE | | 629K| 24M| 2370 (13)| 00:00:07 | KEY | KEY | |* 16 | TABLE ACCESS FULL | T_PM_ACCT_DTL | 629K| 24M| 2370 (13)| 00:00:07 | 352 | 352 | | 17 | VIEW | | 93 | 3255 | 11396 (15)| 00:00:33 | | | | 18 | HASH GROUP BY | | 93 | 5487 | 11396 (15)| 00:00:33 | | | | 19 | PARTITION LIST INLIST | | 93 | 5487 | 11395 (15)| 00:00:33 |KEY(I) |KEY(I) | |* 20 | TABLE ACCESS FULL | T_PM_ACCT_DTL_AF | 93 | 5487 | 11395 (15)| 00:00:33 |KEY(I) |KEY(I) | ---------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("T1"."ACCT_NO_PK"="T2"."ACCT_NO_PK") 3 - access("A"."MGR_CODE"="T2"."MGR_CODE") 5 - filter("A"."DEPT1_CODE"='18605' AND "A"."DEPT1_CODE"<>'999999999') 6 - access("A"."UNIT3_CODE"='18601' AND ("A"."MGR_CODE"='00798' OR "A"."MGR_CODE"='00817')) 8 - access("T2"."PK_DEPT"="T4"."PK_NCTOBAPDEPT"(+)) 9 - filter("T4"."DEPTCODE"(+)<>'999999999') 10 - filter(NVL("T2"."CM_CODE",NVL("T3"."MGR_CODE",'xxxxxx'))='00798' OR NVL("T2"."CM_CODE",NVL("T3"."MGR_CODE",'xxxxxx'))='00817') 11 - access("T1"."PK_CM_PSNDOC"="T2"."PK_CM_PSNDOC"(+)) 12 - filter(DECODE(TO_CHAR("T2"."DR"(+)),'',0,"T2"."DR"(+))=0) 13 - access("T1"."ACCOUNT"(+)="T3"."ACCT_NO_PK") 14 - filter(DECODE("T1"."SEAL_FLAG"(+),'','N',"T1"."SEAL_FLAG"(+))='N' AND REPLACE("T1"."EFFECT_DATE"(+),'-')<='20121217' AND DECODE(TO_CHAR("T1"."DR"(+)),'',0,"T1"."DR"(+))=0 AND REPLACE(DECODE("T1"."SEAL_DATE"(+),'',"PKG_UF_BANK"."FN_GETNEXTDAY"('20121217','M'),"T1"."SEAL_DATE"(+)),'-')> '20121217') 16 - filter("T3"."ACCT_FLAG"='DEPOSIT') 20 - filter("ACCT_FLAG"='DEPOSIT' AND SUBSTR("FLAG",1,1)='1' AND SUBSTR("FLAG",4,1)='1' AND "T1"."DEPT1_CODE"<>'999999999' AND TO_NUMBER("T1"."CUR_CODE")=1) Statistics ---------------------------------------------------------- 154 recursive calls 0 db block gets 193327 consistent gets 13545 physical reads 692 redo size 1064 bytes sent via SQL*Net to client 1649 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 2 rows processed