查看: 11267|回复: 18

[性能调整] 多表连接SQL优化如何处理

[复制链接]
认证徽章
论坛徽章:
71
2015年新春福章
日期:2015-03-06 11:57:312013年新春福章
日期:2013-02-25 14:51:24双黄蛋
日期:2013-01-06 13:31:18蜘蛛蛋
日期:2013-01-06 10:26:08茶鸡蛋
日期:2012-11-21 19:35:23ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07版主2段
日期:2012-05-15 15:24:11铁扇公主
日期:2012-02-21 15:02:402012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2012-1-12 11:54 | 显示全部楼层 |阅读模式
select    a.inst_id  ,    count(*) from  
(   
   SELECT       L.USER_ID,   R.RESP_APPL_ID,  R.RESPONSIBILITY_ID, F.AUDSID,S.SID,  
               USR.USER_NAME, RSP.RESPONSIBILITY_NAME,  FRM.USER_FORM_NAME, S.INST_ID   
     FROM     FND_RESPONSIBILITY_TL    RSP,     --  3188   rows  
          FND_FORM_TL     FRM,                      --   8992   
          FND_USER USR,                             --   39400   
          FND_LOGINS L,                              --   510000  
          FND_LOGIN_RESPONSIBILITIES R,    ---  280000  
          FND_LOGIN_RESP_FORMS F,            ---   1120000  
          GV$SESSION S                                    ---  VIEW    300  
    WHERE     R.LOGIN_ID = F.LOGIN_ID  
          AND R.LOGIN_RESP_ID = F.LOGIN_RESP_ID     --      R, F   表中   LOGIN_ID , LOGIN_RESP_ID  联合索引
          AND L.LOGIN_ID = R.LOGIN_ID                      ---  L  表中 LOGIN_ID  唯一索引   
          AND L.END_TIME IS NULL                               ----- L  表中 END_TIME is NULL  为 38万   
          AND R.END_TIME IS NULL                               ----- R  表中 END_TIME is NULL  为 10 万   
          AND F.END_TIME IS NULL                              ----- F 表中 END_TIME is NULL  为 12 万   
          AND L.USER_ID = USR.USER_ID                     --    L, USR  表中 USER_ID  存在索引 , USR中是唯一的 。
          AND R.RESPONSIBILITY_ID = RSP.RESPONSIBILITY_ID     --  R 中RESPONSIBILITY_ID 无索引(只有56个不同值),RESP_APPL_ID无索引
          AND R.RESP_APPL_ID = RSP.APPLICATION_ID                 ---(只有16个不同值) , RSP 中 APPLICATION_ID与RESPONSIBILITY_ID 联合索引         
          AND RSP.LANGUAGE = USERENV ('LANG')
          AND F.FORM_APPL_ID = FRM.APPLICATION_ID   ---  F 表FORM_APPL_ID 与FORM_ID 联合索引  
          AND F.FORM_ID = FRM.FORM_ID                      --- FRM 表中 FORM_APPL_ID 与FORM_ID 联合唯一索引   
          AND FRM.LANGUAGE = USERENV ('LANG')     
          AND F.AUDSID = S.AUDSID                             ---  F 表中AUDSID 有索引         
)  a      
group by  a.inst_id  ;

其中中间的select 是一个view,  这里把它展开 。

这种SQL 优化如何下手  ?   Index scan  , full table scan ,   表连接 , 还是Cost  ??  

认证徽章
论坛徽章:
71
2015年新春福章
日期:2015-03-06 11:57:312013年新春福章
日期:2013-02-25 14:51:24双黄蛋
日期:2013-01-06 13:31:18蜘蛛蛋
日期:2013-01-06 10:26:08茶鸡蛋
日期:2012-11-21 19:35:23ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07版主2段
日期:2012-05-15 15:24:11铁扇公主
日期:2012-02-21 15:02:402012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2012-1-12 12:07 | 显示全部楼层

RE: 多表连接SQL优化如何处理

本帖最后由 tolywang 于 2012-1-12 12:10 编辑

Plan :  
SELECT STATEMENT  ALL_ROWSCost: 9,181  Bytes: 281,585  Cardinality: 1,415            
21 HASH JOIN  Cost: 9,181  Bytes: 281,585  Cardinality: 1,415            
  19 NESTED LOOPS           
   17 NESTED LOOPS  Cost: 8,718  Bytes: 251,870  Cardinality: 1,415         
    15 HASH JOIN  Cost: 5,886  Bytes: 232,060  Cardinality: 1,415         
     13 HASH JOIN  Cost: 5,851  Bytes: 183,950  Cardinality: 1,415        
      1 TABLE ACCESS FULL TABLE APPLSYS.FND_RESPONSIBILITY_TL Cost: 27  Bytes: 63,760  Cardinality: 1,594      
      12 NESTED LOOPS  Cost: 5,823  Bytes: 127,350  Cardinality: 1,415      
       10 HASH JOIN  Cost: 5,823  Bytes: 121,690  Cardinality: 1,415      
        8 NESTED LOOPS     
         6 NESTED LOOPS  Cost: 4,471  Bytes: 87,851  Cardinality: 1,489   
          4 NESTED LOOPS  Cost: 1  Bytes: 35,736  Cardinality: 1,489   
           2 FIXED TABLE FULL TABLE (FIXED) SYS.X$KSLWT Cost: 1  Bytes: 11,912  Cardinality: 1,489  
           3 FIXED TABLE FIXED INDEX TABLE (FIXED) SYS.X$KSUSE (ind:1) Cost: 0  Bytes: 16  Cardinality: 1  
          5 INDEX RANGE SCAN INDEX APPLSYS.FND_LOGIN_RESP_FORMS_N2 Cost: 2  Cardinality: 1   
         7 TABLE ACCESS BY INDEX ROWID TABLE APPLSYS.FND_LOGIN_RESP_FORMS Cost: 3  Bytes: 35  Cardinality: 1   
        9 TABLE ACCESS FULL TABLE APPLSYS.FND_LOGIN_RESPONSIBILITIES Cost: 1,350  Bytes: 2,575,800  Cardinality: 95,400     
       11 FIXED TABLE FIXED INDEX TABLE (FIXED) SYS.X$KSLED (ind:2) Cost: 0  Bytes: 4  Cardinality: 1      
     14 TABLE ACCESS FULL TABLE APPLSYS.FND_FORM_TL Cost: 35  Bytes: 152,864  Cardinality: 4,496        
    16 INDEX UNIQUE SCAN INDEX (UNIQUE) APPLSYS.FND_LOGINS_U1 Cost: 1  Cardinality: 1         
   18 TABLE ACCESS BY INDEX ROWID TABLE APPLSYS.FND_LOGINS Cost: 2  Bytes: 14  Cardinality: 1         
  20 TABLE ACCESS FULL TABLE APPLSYS.FND_USER Cost: 462  Bytes: 828,030  Cardinality: 39,430   

使用道具 举报

回复
论坛徽章:
5
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51数据库板块每日发贴之星
日期:2011-07-22 01:01:02蜘蛛蛋
日期:2011-08-24 14:10:13ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:54:26
发表于 2012-1-12 12:52 | 显示全部楼层
不管多少表,ORACLE 每次JOIN 只能处理2个表/行源 保证访问路径正确,CBO预估基数正确,执行计划基本没问题

使用道具 举报

回复
论坛徽章:
19
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292015年新春福章
日期:2015-03-04 14:53:16优秀写手
日期:2014-03-19 06:00:24马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08比亚迪
日期:2013-10-23 21:35:02ITPUB社区12周年站庆徽章
日期:2013-10-08 14:54:39茶鸡蛋
日期:2013-07-25 19:48:40灰彻蛋
日期:2013-05-24 09:42:412013年新春福章
日期:2013-02-25 14:51:24
发表于 2012-1-12 13:15 | 显示全部楼层

看的头晕的说

使用道具 举报

回复
认证徽章
论坛徽章:
71
2015年新春福章
日期:2015-03-06 11:57:312013年新春福章
日期:2013-02-25 14:51:24双黄蛋
日期:2013-01-06 13:31:18蜘蛛蛋
日期:2013-01-06 10:26:08茶鸡蛋
日期:2012-11-21 19:35:23ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07版主2段
日期:2012-05-15 15:24:11铁扇公主
日期:2012-02-21 15:02:402012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2012-1-12 14:33 | 显示全部楼层


Execution Plan
----------------------------------------------------------
--------------------------------------------------------------------------------
-----------------------
| Id  | Operation                           | Name                       | Rows | Bytes | Cost (%CPU)|
--------------------------------------------------------------------------------
-----------------------
|   0 | SELECT STATEMENT                    |                            |  1415 |   274K|  9181   (1)|
|*  1 |  HASH JOIN                          |                            |  1415 |   274K|  9181   (1)|
|   2 |   NESTED LOOPS                      |                            | |       |            |
|   3 |    NESTED LOOPS                     |                            |  1415 |   245K|  8718   (1)|
|*  4 |     HASH JOIN                       |                            |  1415 |   226K|  5886   (1)|
|*  5 |      HASH JOIN                      |                            |  1415 |   179K|  5851   (1)|
|*  6 |       TABLE ACCESS FULL             | FND_RESPONSIBILITY_TL      |  1594 | 63760 |    27   (0)|
|   7 |       NESTED LOOPS                  |                            |  1415 |   124K|  5823   (1)|
|*  8 |        HASH JOIN                    |                            |  1415 |   118K|  5823   (1)|
|   9 |         NESTED LOOPS                |                            | |       |            |
|  10 |          NESTED LOOPS               |                            |  1489 | 87851 |  4471   (1)|
|  11 |           NESTED LOOPS              |                            |  1489 | 35736 |     1 (100)|
|  12 |            FIXED TABLE FULL         | X$KSLWT                    |  1489 | 11912 |     1 (100)|
|* 13 |            FIXED TABLE FIXED INDEX  | X$KSUSE (ind:1)            |     1 |    16 |     0   (0)|
|* 14 |           INDEX RANGE SCAN          | FND_LOGIN_RESP_FORMS_N2    |     1 |       |     2   (0)|
|* 15 |          TABLE ACCESS BY INDEX ROWID| FND_LOGIN_RESP_FORMS       |     1 |    35 |     3   (0)|
|* 16 |         TABLE ACCESS FULL           | FND_LOGIN_RESPONSIBILITIES | 95400 |  2515K|  1350   (1)|
|* 17 |        FIXED TABLE FIXED INDEX      | X$KSLED (ind:2)            |     1 |     4 |     0   (0)|
|* 18 |      TABLE ACCESS FULL              | FND_FORM_TL                |  4496 |   149K|    35   (3)|
|* 19 |     INDEX UNIQUE SCAN               | FND_LOGINS_U1              |     1 |       |     1   (0)|
|* 20 |    TABLE ACCESS BY INDEX ROWID      | FND_LOGINS                 |     1 |    14 |     2   (0)|
|  21 |   TABLE ACCESS FULL                 | FND_USER                   | 39430 |   808K|   462   (1)|


Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("L"."USER_ID"="USR"."USER_ID")
   4 - access("F"."FORM_APPL_ID"="FRM"."APPLICATION_ID" AND "F"."FORM_ID"="FRM"."FORM_ID")
   5 - access("R"."RESPONSIBILITY_ID"="RSP"."RESPONSIBILITY_ID" AND "R"."RESP_APPL_ID"="RSP"."APPLICATION_ID")
   6 - filter("RSP"."LANGUAGE"=USERENV('LANG'))
   8 - access("R"."LOGIN_ID"="F"."LOGIN_ID" AND "R"."LOGIN_RESP_ID"="F"."LOGIN_RESP_ID")
  13 - filter(BITAND("S"."KSUSEFLG",1)<>0 AND BITAND("S"."KSSPAFLG",1)<>0 AND "S"."INDX"="W"."KSLWTSID")
  14 - access("F"."AUDSID"="S"."KSUUDSES")
  15 - filter("F"."END_TIME" IS NULL)
  16 - filter("R"."END_TIME" IS NULL)
  17 - filter("W"."KSLWTEVT"="E"."INDX")
  18 - filter("FRM"."LANGUAGE"=USERENV('LANG'))
  19 - access("L"."LOGIN_ID"="R"."LOGIN_ID")
  20 - filter("L"."END_TIME" IS NULL)

使用道具 举报

回复
论坛徽章:
51
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22铁扇公主
日期:2012-02-21 15:03:13最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-05-22 15:10:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:13:332013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-08-12 09:34:36itpub13周年纪念徽章
日期:2014-09-28 10:55:55
发表于 2012-1-12 15:54 | 显示全部楼层
tolywang 发表于 2012-1-12 14:33
Execution Plan
----------------------------------------------------------
-------------------- ...

我觉得瓶颈主要在这个FND_LOGIN_RESPONSIBILITIES 的全表扫
但你的过滤条件都是is null 不太给力啊~
可以试着看看能否改写换换过滤条件
或者从FND_LOGIN_RESPONSIBILITIES 的索引找找办法
你的描述不是有没索引的字段吗?可以试试~
但我还是觉得这个SQL慢的最主要原因还是过滤条件不给力

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:542013年新春福章
日期:2013-02-25 14:51:24
发表于 2012-1-12 16:35 | 显示全部楼层
过滤条件不给力, GV$SESSION 不展开看看执行计划/*+no_merge(S)*/

使用道具 举报

回复
论坛徽章:
25
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442010世博会纪念徽章
日期:2010-07-30 12:07:232011新春纪念徽章
日期:2011-02-18 11:43:332010广州亚运会纪念徽章:高尔夫球
日期:2011-04-11 18:22:37蜘蛛蛋
日期:2011-08-17 08:44:40ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15复活蛋
日期:2011-12-15 09:06:552012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:202013年新春福章
日期:2013-02-25 14:51:24
发表于 2012-1-12 16:53 | 显示全部楼层
业务不明白,数据分布情况不了解,你根据业务情况,两个组合成一个view,然后和另一个table关联,以此类推看看,关联的hits一般只能控制两个表,所以多表的时候有点苍白无力了

使用道具 举报

回复
论坛徽章:
25
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442010世博会纪念徽章
日期:2010-07-30 12:07:232011新春纪念徽章
日期:2011-02-18 11:43:332010广州亚运会纪念徽章:高尔夫球
日期:2011-04-11 18:22:37蜘蛛蛋
日期:2011-08-17 08:44:40ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15复活蛋
日期:2011-12-15 09:06:552012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:202013年新春福章
日期:2013-02-25 14:51:24
发表于 2012-1-12 17:05 | 显示全部楼层
类似:
        WITH T_V
         AS
         (SELECT DISTINCT SUBSTR(yg5.CLASS_FLAG, 1, 9) AS CLASS_FLAG,
                          yg5.ZQID_jk005,
                          yg5.sectname,
                          p205.secid_zj205
            FROM TABLE(arr_repdate) ARR1,
                 jk005 yg5,zj205 p205
           WHERE ARR1.COLUMN_VALUE = SUBSTR(yg5.CLASS_FLAG, 1, 9)
             AND yg5.ISVALID = 1
             AND yg5.zQID_jk005 = p205.f019v_zj205
             AND p205.isvalid = 1
        )
        SELECT /*+ no_merge(v) no_merge(v209)*/
         TO_CHAR(v.jyDATE, 'YYYYMMDD') AS j00118_F001,
         v209.F006N_jy209 AS j00118_F002,
         CASE
           WHEN IV_pejsff = '0001' THEN
            TO_NUMBER(v.ep_tm)
           WHEN IV_pejsff = '0002' THEN
            TO_NUMBER(Decode(v.tm_JLR, 0, NULL, v.SZ1 / v.tm_JLR))
         END AS j00118_F003,
         CASE
           WHEN IV_pejsff = '00003' THEN
            TO_NUMBER(v.SJL)
           WHEN IV_pejsff = '0009' THEN
            TO_NUMBER(Decode(v.GDQY, 0, NULL, v.SZ2 / v.GDQY))
         END AS j00118_F004,
         CASE
           WHEN IV_pejsff = '0004' THEN
            TO_NUMBER(v.SYL)
           WHEN IV_pejsff = '0005' THEN
            TO_NUMBER(Decode(v.MGSJLR, 0, NULL, v.SZ2 / v.MGSJLR))
         END AS j00118_F005,
         v.CLASS_FLAG AS scbk
          FROM (SELECT /*+ no_merge(v)*/
                 v.CLASS_FLAG,
                 v.ZQID_jk005,
                 v.jyDATE,
                 SUM(v.sz) AS sz,
                 SUM(Decode(v.tm_JLR,NULL,0,v.sz)) AS sz1,
                 SUM(Decode(v.GDQY,NULL,0,v.sz)) AS sz2,
                 SUM(v.tm_JLR) AS tm_JLR,
                 SUM(v.GDQY) AS GDQY,
                 SUM(v.MGSJLR) AS MGSJLR,
                 AVG(CASE WHEN IV_tcgz = 'xztc' AND IV_tcfs <> '0' AND v.SJL >= 0 AND IV_tcdydcdz = '0' THEN
                               v.SJL
                          WHEN IV_tcgz = 'xztc' AND IV_tcfs <> '0' AND v.SJL >= 0 AND IV_tcdydcdz <> '0' THEN
                            CASE WHEN IV_zdz >= 0 AND v.SJL <= IV_zdz  THEN
                                      v.SJL
                                 WHEN (IV_zdz < 0 OR IV_zdz IS NULL) AND v.SJL >= 0 THEN
                                      v.SJL
                            END
                          WHEN IV_tcgz = 'xztc' AND IV_tcfs = '0' AND v.SJL <= IV_zdz AND IV_tcdydcdz <> '0' THEN
                            v.SJL
                          WHEN IV_tcgz = 'btc' OR IV_pejsff = 'ztf' THEN
                            v.SJL
                          ELSE
                            NULL
                     END
                    ) AS SJL,
                    AVG(CASE WHEN IV_tcgz = 'xztc' AND IV_tcfs <> '0' AND v.SYL >= 0 AND IV_tcdydcdz = '0' THEN
                               v.SYL
                             WHEN IV_tcgz = 'xztc' AND IV_tcfs <> '0' AND v.SYL >= 0 AND IV_tcdydcdz <> '0' THEN
                               CASE WHEN IV_zdz >= 0 AND v.SYL <= IV_zdz THEN
                                         v.SYL
                                    WHEN (IV_zdz < 0 OR IV_zdz IS NULL) AND v.SYL >= 0 THEN
                                         v.SYL
                               END
                             WHEN IV_tcgz = 'xztc' AND IV_tcfs = '0' AND v.SYL <= IV_zdz AND IV_tcdydcdz <> '0' THEN
                               v.SYL
                             WHEN IV_tcgz = 'btc' OR IV_pejsff = 'ztf' THEN
                               v.SYL
                             ELSE
                               NULL
                     END
                    ) AS SYL,
                 AVG(CASE WHEN IV_tcgz = 'xztc' AND IV_tcfs <> '0' AND v.ep_tm >= 0 AND IV_tcdydcdz = '0' THEN
                               v.ep_tm
                          WHEN IV_tcgz = 'xztc' AND IV_tcfs <> '0' AND v.ep_tm >= 0 AND IV_tcdydcdz <> '0' THEN
                            CASE WHEN IV_zdz >= 0 AND v.ep_tm <= IV_zdz THEN
                                      v.ep_tm
                                 WHEN (IV_zdz < 0 OR IV_zdz IS NULL) AND v.ep_tm >= 0 THEN
                                      v.ep_tm
                            END
                          WHEN IV_tcgz = 'xztc' AND IV_tcfs = '0' AND v.ep_tm <= IV_zdz AND IV_tcdydcdz <> '0' THEN
                            v.ep_tm
                          WHEN IV_tcgz = 'btc' OR IV_pejsff = 'ztf' THEN
                            v.ep_tm
                          ELSE
                            NULL
                     END
                 ) AS ep_tm
                  FROM (SELECT /*+ no_merge(vv)*/
                         vv.CLASS_FLAG,
                         vv.ZQID_jk005,
                         vv.sectname,
                         vv.jyDATE,
                         j207.f003n_jt207 AS sz,
                         j207.f001n_jt207 AS tm_JLR,
                         j207.f002n_jt207 AS GDQY,
                         j207.f004n_jt207 AS MGSJLR,
                         Decode(j207.f001n_jt207,
                                0,
                                0,
                                j207.f003n_jt207 / j207.f001n_jt207) AS ep_tm,
                         Decode(j207.f002n_jt207,
                                0,
                                0,
                                j207.f003n_jt207 / j207.f002n_jt207) AS SJL,
                        Decode(j207.f004n_jt207,
                                0,
                                0,
                                j207.f003n_jt207 / j207.f004n_jt207) AS SYL
                          FROM (SELECT /*+ no_merge(v009) no_merge(v4) use_nl(v009,v4)*/
                                 v4.CLASS_FLAG,
                                 v4.ZQID_jk005,
                                 v4.sectname,
                                 v009.enddate_w,
                                 v4.f011v_sk001,
                                 Decode(SIGN(v009.enddate - v_enddate),
                                        1,
                                        v_enddate,
                                        v009.enddate) AS jyDATE
                                  FROM (SELECT TRUNC(p9.enddate, 'd') enddate_w,
                                               MAX(p9.enddate) enddate
                                          FROM p009 p9
                                         WHERE p9.jymarket_pub009 = '212001'
                                           AND p9.f001 = '1'
                                           AND p9.isvalid = '1'
                                           AND p9.enddate >=
                                               TO_DATE(IV_startdate, 'YYYYMMDD')
                                           AND p9.enddate <= v_enddate
                                         GROUP BY TRUNC(p9.enddate, 'd')
                                        ) v009,
                                        (SELECT v.CLASS_FLAG,
                                                v.ZQID_jk005,
                                                v.sectname,
                                                s1.f011v_sk001,
                                                i4.startdate,
                                                i4.f003
                                           FROM in002 i2,in004 i4,sk001 s1,T_V v
                                          WHERE i2.isvalid = '1'
                                            AND i4.isvalid = 1
                                            AND i2.seq = i4.vseq
                                            AND i4.f001v_ind004 = s1.f011v_sk001
                                            AND s1.isvalid = '1'
                                            AND i2.secid_ind002 = v.secid_zj205
                                        ) v4
                                  WHERE v4.startdate <= v009.enddate - 1
                                    AND (v4.f003 >= v009.enddate OR v4.f003 IS NULL)
                               ) vv,
                               jt207 j207
                         WHERE j207.enddate_jt207(+) >= TO_DATE(IV_startdate, 'YYYYMMDD')
                           AND j207.enddate_jt207(+) <= v_enddate
                           AND j207.zqid_jt207(+) = vv.f011v_sk001
                           AND TRUNC(j207.enddate_jt207(+), 'd') = vv.enddate_w
                           AND j207.isvalid(+) = 1) v
                 WHERE (IV_tcgz = 'xztc' AND IV_tcfs <> '0' AND
                        (v.ep_tm >= 0 OR v.SJL >= 0  OR v.SYL >= 0) AND IV_tcdydcdz <> '0' AND
                        (v.ep_tm <= IV_zdz OR v.SJL <= IV_zdz OR v.SYL <= IV_zdz))
                    OR (IV_tcgz = 'xztc' AND IV_tcfs <> '0' AND
                        (v.ep_tm >= 0 OR v.SJL >= 0  OR v.SYL >= 0) AND IV_tcdydcdz = '0')
                    OR (IV_tcgz = 'xztc' AND IV_tcfs = '0' AND
                        IV_tcdydcdz <> '0' AND (v.ep_tm <= IV_zdz OR v.SJL <= IV_zdz  OR v.SYL <= IV_zdz)
                       )
                    OR (IV_tcgz = 'xztc' AND IV_tcfs = '0' AND
                       IV_tcdydcdz = '0')
                    OR IV_tcgz = 'btc'
                 GROUP BY v.CLASS_FLAG, v.ZQID_jk005, v.jyDATE) v,
               (SELECT t209.f031v_jy209,
                       t209.jydate_jy209,
                       t209.f006n_jy209
                  FROM jy209 t209
                 WHERE t209.isvalid = '1'
                   AND t209.jydate_jy209 >=
                       TO_DATE(IV_startdate, 'YYYYMMDD')
                   AND t209.jydate_jy209 <= v_enddate) v209 =
         WHERE v.ZQID_jk005 = v209.f031v_jy209(+)
           AND v.jyDATE = v209.jydate_jy209(+);

使用道具 举报

回复
认证徽章
论坛徽章:
71
2015年新春福章
日期:2015-03-06 11:57:312013年新春福章
日期:2013-02-25 14:51:24双黄蛋
日期:2013-01-06 13:31:18蜘蛛蛋
日期:2013-01-06 10:26:08茶鸡蛋
日期:2012-11-21 19:35:23ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07版主2段
日期:2012-05-15 15:24:11铁扇公主
日期:2012-02-21 15:02:402012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
发表于 2012-1-12 17:47 | 显示全部楼层
谢谢各位, 先看看, 消化一下。

数据库版本 11.2.0.2  ,   因为是Oracle EBS 相关的应用, 对SQL语句的大改动估计不是太容易,
先研究一下备用,  实在跑不动了, 估计也要妥协进行修改 。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表