EAS优化-日收银汇总单优化

日收银汇总单在原来加上日期之后,效率有了很大的提升。但是在后台监控相关语句时,发现IO的量还是比较大。重新将相关语句进行了分析优化。

SELECT  acTbl.FParentID FParentID,

                        MIN(

                                CASE

                                       WHEN acTbl.FCardNumberID IS NULL

                                       THEN' '

                                       ELSE acTbl.FCardNumberID

                                END) FMinCdNum

                FROM    T_CYI_AccountsEntry acTbl

                        LEFT JOIN T_CYI_Accounts acTs

                        ON      acTs.fid=acTbl.FParentID

                        LEFT JOIN T_BD_SettlementTypeseTbl

                        ON      acTbl.FPaymentFashionID = seTbl.FID

                WHERE   acTs.FBizDate                  >=to_date('2014-09-08','yyyy-mm-dd')

                        AND acTs.FBizDate              <=to_date('2014-09-08','yyyy-mm-dd')

                        AND seTbl.FdeletedStatus        =1

                GROUPBY FParentID

执行语句分析,发现全表扫描了T_CYI_Accounts。原因为上次优化之后加入了日期条件,但是并未就日期进行索引。导致了全表扫描。增加索引之后,前后计划比较:

优化前:

 

Execution Plan

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

Plan hash value: 4174569348

 

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

| Id | Operation               |Name                 | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |

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

|   0| SELECT STATEMENT        |                      |  3037 |  376K| 72155   (1)| 00:14:26 |       |      |

|   1|  HASH GROUP BY          |                      |  3037 |  376K| 72155   (1)| 00:14:26 |       |      |

|   2|   NESTED LOOPS          |                      |  3037 |  376K| 72155   (1)| 00:14:26 |       |      |

|   3|    VIEW                 | VW_GBC_9             | 3182 |   282K| 72153   (1)| 00:14:26 |       |      |

|   4|     HASH GROUP BY       |                      |  3182 |  431K| 72153   (1)| 00:14:26 |       |      |

|*  5|      HASH JOIN          |                      |  3182 |  431K| 72152   (1)| 00:14:26 |       |      |

|*  6|       TABLE ACCESS FULL |T_CYI_ACCOUNTS       |  1928 | 77120 | 31864   (1)| 00:06:23 |       |      |

|   7|       PARTITION HASH ALL|                      |  4723K|  445M| 40237   (1)| 00:08:03 |     1 |    4 |

|   8|        TABLE ACCESS FULL|T_CYI_ACCOUNTSENTRY  |  4723K|  445M| 40237   (1)| 00:08:03 |     1 |    4 |

|*  9|    INDEX RANGE SCAN     | IDX_SETTLEMENTTYPE_1 |     1 |   36 |     1   (0)| 00:00:01 |       |      |

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

 

Predicate Information (identified byoperation id):

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

 

   5-access("ACTS"."FID"="ACTBL"."FPARENTID")

   6- filter("ACTS"."FBIZDATE"=TIMESTAMP' 2014-09-08 00:00:00')

   9- access("ITEM_1"="SETBL"."FID" AND"SETBL"."FDELETEDSTATUS"=1)

 

 

Statistics

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

         0  recursive calls

         0  db block gets

    116405  consistent gets

    116397  physical reads

         0  redo size

       408  bytes sent via SQL*Net toclient

       513  bytes received via SQL*Netfrom client

         1  SQL*Net roundtrips to/fromclient

         0  sorts (memory)

         0  sorts (disk)

0        rows processed

优化后:

 

Execution Plan

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

Plan hash value: 2407869826

 

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

| Id | Operation                      |Name                 | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0| SELECT STATEMENT               |                      |  3189 |  454K|  1118   (1)| 00:00:14 |

|   1|  HASH GROUP BY                 |                      |  3189 |  454K|  1118   (1)| 00:00:14 |

|   2|   NESTED LOOPS                 |                      |  3189 |  454K|  1117   (0)| 00:00:14 |

|   3|    NESTED LOOPS                |                      |  3189 |  342K|  1116   (0)| 00:00:14 |

|   4|     TABLE ACCESS BY INDEX ROWID|T_CYI_ACCOUNTS       |  2105 | 84200 |    63  (0)| 00:00:01 |

|*  5|      INDEX RANGE SCAN          | IDX_CYI_ACCBIZ       | 2110 |       |     4  (0)| 00:00:01 |

|*  6|     INDEX RANGE SCAN           | IX_ACCOUNTSENTRY_1   |     2 |  140 |     1   (0)| 00:00:01 |

|*  7|    INDEX RANGE SCAN            | IDX_SETTLEMENTTYPE_1 |     1 |   36 |     1   (0)| 00:00:01 |

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

 

Predicate Information (identified byoperation id):

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

 

   5- access("ACTS"."FBIZDATE"=TIMESTAMP' 2014-09-08 00:00:00')

   6-access("ACTS"."FID"="ACTBL"."FPARENTID")

   7- access("ACTBL"."FPAYMENTFASHIONID"="SETBL"."FID"AND "SETBL"."FDELETEDSTATUS"=1)

 

 

Statistics

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

         1  recursive calls

         0  db block gets

      5948  consistent gets

         8  physical reads

         0  redo size

    133479  bytes sent via SQL*Net toclient

      2625  bytes received via SQL*Netfrom client

       193  SQL*Net roundtrips to/fromclient

         0  sorts (memory)

         0  sorts (disk)

      2879  rows processed

降低了大量的硬盘直接读取和IO。运行时间由9s提升至0.5S.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值