查看: 1955|回复: 1

这个语句怎么优化,帮忙提点建议

[复制链接]
论坛徽章:
15
数据库板块每日发贴之星
日期:2008-06-30 01:01:54奥运会纪念徽章:羽毛球
日期:2012-06-26 15:21:24ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26数据库板块每日发贴之星
日期:2011-07-15 01:01:01ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:加纳
日期:2010-07-27 08:59:132010年世界杯参赛球队:智利
日期:2010-07-14 16:06:302010年世界杯参赛球队:斯洛伐克
日期:2010-07-10 02:35:492010年世界杯参赛球队:英格兰
日期:2010-07-09 18:54:212010年世界杯参赛球队:瑞士
日期:2010-01-22 13:33:24
发表于 2010-12-10 09:20 | 显示全部楼层 |阅读模式
select sum(nvl(a.bqjy, 0)) + sum(nvl(a.sqzgfc, 0)) + sum(nvl(a.bqsr, 0)) -   sum(nvl(a.zgfc, 0)) - sum(nvl(a.sjfc, 0)) ye
  from (select a.pk_customer,
               a.pk_upbkey pk_contract,
               nvl(a.bqjy, 0) bqjy,
               nvl(a.bqzgfc, 0) sqzgfc,
               0 bqsr,
               0 zgfc,
               0 sjfc
          from sheh_cusbalance_b a, v_accperiod b
         WHERE a.pk_accperiodmonth = b.pk_accperiodmonth
           and b.ym = '2010-11'
           and nvl(a.dr, 0) = 0
        UNION ALL
        select f.hbbm pk_customer,
               z.zyx12 pk_contract,
               0 bqjy,
               0 sqzgfc,
               sum(f.ybye) bqsr,
               0 zgfc,
               0 sjfc
          from arap_djzb z, arap_djfb f
         where z.vouchid = f.vouchid
           AND z.djrq like '2010-12%'
           AND z.djlxbm = 'D2'
           AND z.djzt = 3
           AND z.dwbm = '1120'
           and nvl(z.dr, 0) = 0
           AND nvl(f.dr, 0) = 0
         group by hbbm, z.zyx12
        UNION ALL
        SELECT a.pk_customer,
               a.pk_contract,
               0 bqjy,
               0 sqzgfc,
               0 bqsr,
               SUM(a.ddje) - SUM(a.ycje) zgfc,
               0 sjfc
          FROM (SELECT f.pk_cubasdoc pk_customer,
                       a.pk_defdoc12 pk_contract,
                       SUM(nvl(b.noriginalcursummny, 0)) ddje,
                       0 ycje
                  from so_sale        a,
                       so_saleorder_b b,
                       so_saleexecute ec,
                       bd_cumandoc    f
                 where a.csaleid = b.csaleid
                   and b.corder_bid = ec.csale_bid
                   and a.ccustomerid = f.pk_cumandoc
                   AND a.pk_corp = '1120'
                   AND a.fstatus = 2
                   and a.dbilldate <= '2010-12-31'
                 group by f.pk_cubasdoc, a.pk_defdoc12
                UNION ALL
                SELECT c.pk_cubasdoc pk_customer,
                       d.pk_defdoc12,
                       0 ddje,
                       SUM(NVL(b.noutnum, 0) *
                           NVL(e.noriginalcurtaxnetprice, 0)) ycje
                  from ic_general_h   a,
                       ic_general_b   b,
                       bd_cumandoc    c,
                       so_sale        d,
                       so_saleorder_b e
                 where a.cgeneralhid = b.cgeneralhid
                   AND a.ccustomerid = c.pk_cumandoc
                   AND b.csourcebillhid = d.csaleid
                   AND b.csourcebillbid = e.corder_bid
                   AND d.csaleid = e.csaleid
                   AND a.cbilltypecode = '4C'
                   AND a.vuserdef13 <= '2010-12-31' || ' ' || '15:00:00'
                   AND NVL(a.dr, 0) = 0
                   AND NVL(b.dr, 0) = 0
                   and a.pk_corp = '1120'
                   and b.csourcebillhid is not null
                 group by c.pk_cubasdoc, d.pk_defdoc12) a
         GROUP BY a.pk_customer, a.pk_contract
        UNION ALL
        select cd.pk_cubasdoc pk_customer,
               d.pk_defdoc12 pk_contract,
               0 bqjy,
               0 sqzgfc,
               0 bqsr,
               0 zgfc,
               sum(nvl(b.nquotemny, 0)) sgfc
          from ic_general_h h, ic_general_b b, bd_cumandoc cd, so_sale d
         where h.cgeneralhid = b.cgeneralhid
           and cd.pk_cumandoc = h.ccustomerid
           AND b.csourcebillhid = d.csaleid
           AND h.vuserdef13 > '2010-11-30' || ' ' || '15:00:00'
           and h.vuserdef13 <= '2010-12-31' || ' ' || '15:00:00'
           AND h.pk_corp = '1120'
           and h.cbilltypecode = '4C'
           AND NVL(h.dr, 0) = 0
           AND NVL(b.dr, 0) = 0
           AND NVL(b.nquotemny, 0) <> 0
         group by cd.pk_cubasdoc, d.pk_defdoc12) a
where a.pk_customer =
       (select pk_cubasdoc
          from bd_cumandoc
         where pk_cumandoc = '0001B8100000000B3EP9')






-------------------------------------------------------------------------------------------------------------
| Id  | Operation                             | Name                | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                      |                     |     1 |    87 |  4611   (1)| 00:00:56 |
|   1 |  SORT AGGREGATE                       |                     |     1 |    87 |            |          |
|*  2 |   VIEW                                |                     |   949 | 82563 |  4610   (1)| 00:00:56 |
|   3 |    UNION-ALL                          |                     |       |       |            |          |
|*  4 |     HASH JOIN                         |                     |    74 |  7104 |    41   (5)| 00:00:01 |
|   5 |      VIEW                             | V_ACCPERIOD         |     1 |    22 |    11  (10)| 00:00:01 |
|   6 |       SORT ORDER BY                   |                     |     1 |    94 |    11  (10)| 00:00:01 |
|*  7 |        TABLE ACCESS BY INDEX ROWID    | BD_ACCPERIODMONTH   |     1 |    68 |     1   (0)| 00:00:01 |
|   8 |         NESTED LOOPS                  |                     |     1 |    94 |    10   (0)| 00:00:01 |
|   9 |          TABLE ACCESS FULL            | BD_ACCPERIOD        |     5 |   130 |     8   (0)| 00:00:01 |
|* 10 |          INDEX RANGE SCAN             | I_BD_PERIODMONTH    |    12 |       |     1   (0)| 00:00:01 |
|* 11 |      TABLE ACCESS FULL                | SHEH_CUSBALANCE_B   |   964 | 71336 |    29   (0)| 00:00:01 |
|  12 |     HASH GROUP BY                     |                     |     5 |   500 |    28   (4)| 00:00:01 |
|* 13 |      TABLE ACCESS BY INDEX ROWID      | ARAP_DJFB           |     4 |   196 |     1   (0)| 00:00:01 |
|  14 |       NESTED LOOPS                    |                     |     5 |   500 |    27   (0)| 00:00:01 |
|* 15 |        TABLE ACCESS BY INDEX ROWID    | ARAP_DJZB           |     1 |    51 |    26   (0)| 00:00:01 |
|* 16 |         INDEX RANGE SCAN              | I_ARAP_DJZB001      |    99 |       |     6   (0)| 00:00:01 |
|* 17 |        INDEX RANGE SCAN               | I_ARAP_DJFB001      |     4 |       |     1   (0)| 00:00:01 |
|  18 |     HASH GROUP BY                     |                     |   502 | 35140 |  3405   (1)| 00:00:41 |
|  19 |      VIEW                             |                     |   502 | 35140 |  3404   (1)| 00:00:41 |
|  20 |       UNION-ALL                       |                     |       |       |            |          |
|  21 |        HASH GROUP BY                  |                     |   487 | 85712 |   449   (2)| 00:00:06 |
|* 22 |         HASH JOIN                     |                     |   487 | 85712 |   448   (2)| 00:00:06 |
|* 23 |          HASH JOIN                    |                     |   487 | 75485 |   393   (2)| 00:00:05 |
|  24 |           NESTED LOOPS                |                     |   450 | 48600 |   279   (1)| 00:00:04 |
|* 25 |            TABLE ACCESS FULL          | SO_SALE             |   448 | 29568 |    99   (2)| 00:00:02 |
|  26 |            TABLE ACCESS BY INDEX ROWID| BD_CUMANDOC         |     1 |    42 |     1   (0)| 00:00:01 |
|* 27 |             INDEX UNIQUE SCAN         | PK_BD_CUMANDOC      |     1 |       |     1   (0)| 00:00:01 |
|  28 |           TABLE ACCESS FULL           | SO_SALEORDER_B      |  6776 |   311K|   114   (2)| 00:00:02 |
|  29 |          INDEX FAST FULL SCAN         | I_SO_SALEEXECUTE    | 19845 |   406K|    54   (0)| 00:00:01 |
|  30 |        HASH GROUP BY                  |                     |    15 |  3675 |  2955   (1)| 00:00:36 |
|  31 |         NESTED LOOPS                  |                     |    15 |  3675 |  2954   (1)| 00:00:36 |
|  32 |          NESTED LOOPS                 |                     |    15 |  3045 |  2948   (1)| 00:00:36 |
|  33 |           NESTED LOOPS                |                     |    51 |  6936 |  2927   (1)| 00:00:36 |
|* 34 |            HASH JOIN                  |                     |  6776 |   476K|   214   (2)| 00:00:03 |
|  35 |             TABLE ACCESS FULL         | SO_SALE             |  6257 |   158K|    99   (2)| 00:00:02 |
|  36 |             TABLE ACCESS FULL         | SO_SALEORDER_B      |  6776 |   304K|   114   (2)| 00:00:02 |
|* 37 |            TABLE ACCESS BY INDEX ROWID| IC_GENERAL_B        |     1 |    64 |     1   (0)| 00:00:01 |
|* 38 |             INDEX RANGE SCAN          | I_IC_GENERAL_B_3    |     1 |       |     1   (0)| 00:00:01 |
|* 39 |           TABLE ACCESS BY INDEX ROWID | IC_GENERAL_H        |     1 |    67 |     1   (0)| 00:00:01 |
|* 40 |            INDEX UNIQUE SCAN          | PK_IC_GENERAL_H     |     1 |       |     1   (0)| 00:00:01 |
|  41 |          TABLE ACCESS BY INDEX ROWID  | BD_CUMANDOC         |     1 |    42 |     1   (0)| 00:00:01 |
|* 42 |           INDEX UNIQUE SCAN           | PK_BD_CUMANDOC      |     1 |       |     1   (0)| 00:00:01 |
|  43 |     HASH GROUP BY                     |                     |   368 | 66976 |  1136   (1)| 00:00:14 |
|* 44 |      HASH JOIN                        |                     |   368 | 66976 |  1135   (1)| 00:00:14 |
|* 45 |       TABLE ACCESS BY INDEX ROWID     | IC_GENERAL_B        |     1 |    47 |     1   (0)| 00:00:01 |
|  46 |        NESTED LOOPS                   |                     |   368 | 57408 |  1035   (1)| 00:00:13 |
|  47 |         NESTED LOOPS                  |                     |   329 | 35861 |   903   (1)| 00:00:11 |
|* 48 |          TABLE ACCESS BY INDEX ROWID  | IC_GENERAL_H        |   329 | 22043 |   771   (1)| 00:00:10 |
|* 49 |           INDEX RANGE SCAN            | I_IC_GENERAL_H_BYB1 |  2182 |       |     5   (0)| 00:00:01 |
|  50 |          TABLE ACCESS BY INDEX ROWID  | BD_CUMANDOC         |     1 |    42 |     1   (0)| 00:00:01 |
|* 51 |           INDEX UNIQUE SCAN           | PK_BD_CUMANDOC      |     1 |       |     1   (0)| 00:00:01 |
|* 52 |         INDEX RANGE SCAN              | I_IC_GENERAK_B_6    |     2 |       |     1   (0)| 00:00:01 |
|  53 |       TABLE ACCESS FULL               | SO_SALE             |  6257 |   158K|    99   (2)| 00:00:02 |
|  54 |    TABLE ACCESS BY INDEX ROWID        | BD_CUMANDOC         |     1 |    42 |     1   (0)| 00:00:01 |
|* 55 |     INDEX UNIQUE SCAN                 | PK_BD_CUMANDOC      |     1 |       |     1   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - filter("A"."PK_CUSTOMER"= (SELECT "PK_CUBASDOC" FROM "BD_CUMANDOC" "BD_CUMANDOC" WHERE
              "PK_CUMANDOC"='0001B8100000000B3EP9'))
   4 - access("A"."PK_ACCPERIODMONTH"="B"."PK_ACCPERIODMONTH")
   7 - filter("BD_ACCPERIOD"."PERIODYEAR"||'-'||"BD_ACCPERIODMONTH"."MONTH"='2010-11')
  10 - access("BD_ACCPERIOD"."PK_ACCPERIOD"="BD_ACCPERIODMONTH"."PK_ACCPERIOD")
  11 - filter(NVL("A"."DR",0)=0)
  13 - filter(NVL("F"."DR",0)=0)
  15 - filter("Z"."DJLXBM"='D2' AND "Z"."DJZT"=3 AND NVL("Z"."DR",0)=0)
  16 - access("Z"."DJRQ" LIKE '2010-12%' AND "Z"."DWBM"='1120')
       filter("Z"."DJRQ" LIKE '2010-12%' AND "Z"."DWBM"='1120')
  17 - access("Z"."VOUCHID"="F"."VOUCHID")
  22 - access("B"."CORDER_BID"="EC"."CSALE_BID")
  23 - access("A"."CSALEID"="B"."CSALEID")
  25 - filter("A"."FSTATUS"=2 AND "A"."PK_CORP"='1120' AND "A"."DBILLDATE"<='2010-12-31')
  27 - access("A"."CCUSTOMERID"="F"."PK_CUMANDOC")
  34 - access("D"."CSALEID"="E"."CSALEID")
  37 - filter(NVL("B"."DR",0)=0)
  38 - access("B"."CSOURCEBILLBID"="E"."CORDER_BID" AND "B"."CSOURCEBILLHID"="D"."CSALEID")
       filter("B"."CSOURCEBILLBID" IS NOT NULL AND "B"."CSOURCEBILLHID" IS NOT NULL)
  39 - filter(NVL("A"."DR",0)=0 AND "A"."CCUSTOMERID" IS NOT NULL AND "A"."CBILLTYPECODE"='4C' AND
              "A"."PK_CORP"='1120' AND "A"."VUSERDEF13"<='2010-12-31 15:00:00')
  40 - access("B"."CGENERALHID"="A"."CGENERALHID")
  42 - access("A"."CCUSTOMERID"="C"."PK_CUMANDOC")
  44 - access("B"."CSOURCEBILLHID"="D"."CSALEID")
  45 - filter(NVL("B"."DR",0)=0 AND "B"."CSOURCEBILLHID" IS NOT NULL AND NVL("B"."NQUOTEMNY",0)<>0)
  48 - filter(NVL("H"."DR",0)=0 AND "H"."CCUSTOMERID" IS NOT NULL AND "H"."CBILLTYPECODE"='4C')
  49 - access("H"."PK_CORP"='1120' AND "H"."VUSERDEF13">'2010-11-30 15:00:00' AND
              "H"."VUSERDEF13"<='2010-12-31 15:00:00')
  51 - access("CD"."PK_CUMANDOC"="H"."CCUSTOMERID")
  52 - access("B"."CGENERALHID"="H"."CGENERALHID")
  55 - access("PK_CUMANDOC"='0001B8100000000B3EP9')


Statistics
----------------------------------------------------------
          8  recursive calls
          0  db block gets
     907140  consistent gets
          7  physical reads
          0  redo size
        332  bytes sent via SQL*Net to client
       2533  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
          1  rows processed

09:17:06 SQL>
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2010-12-10 09:40 | 显示全部楼层
可以考虑给arap_djzb 表按dwbm列表作分区, so_sale按pk_corp同样处理。

使用道具 举报

回复

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

本版积分规则 发表回复

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号
  
快速回复 返回顶部 返回列表