• 慎用位图索引


    /* Formatted on 2014/03/18 09:48 (Formatter Plus v4.8.8) */
    SELECT   c.fee_type_desc, i.order_code, b.chn_name AS rexp_code_name,
             i.rexp_code,
             (CASE (SUBSTR ((f.order_name || '/' || f.SPECIFICATION),
                            LENGTH (f.order_name || '/' || f.SPECIFICATION),
                            LENGTH (f.order_name || '/' || f.SPECIFICATION)
                           )
                   )
                 WHEN '/'
                    THEN SUBSTR ((f.order_name || '/' || f.SPECIFICATION),
                                 0,
                                   LENGTH ((f.order_name || '/' || f.SPECIFICATION
                                           )
                                          )
                                 - 1
                                )
                 ELSE (f.order_name || '/' || f.SPECIFICATION)
              END
             ) AS order_name,
             SUM (i.dosage_qty) AS dosage_qty, f.unit_code AS dosage_unit,
             i.own_price, SUM (i.tot_amt) AS tot_amt
        FROM icsi_ordd i, base_fee f, base_dictionary b, ins_fee_type c
       WHERE i.bill_no IN ('201401241636045510')
         AND i.hosp_area = '001'
         AND i.hosp_area = f.hosp_area
         AND i.order_code = f.order_code
         AND b.GROUP_ID = 'SYS_CHARGE'
         AND b.ID = i.rexp_code
         AND (i.setmain_flg = 'N' OR i.setmain_flg IS NULL)
         AND i.tot_amt <> 0
         AND f.inspay_type = c.fee_type_code(+)
         AND c.starline_flg(+) = 'N'
         AND c.plan_flg(+) = 'N'
         AND c.item_flg(+) = 'Y'
    GROUP BY i.rexp_code,
             b.chn_name,
             i.order_code,
             c.fee_type_desc,
             (CASE (SUBSTR ((f.order_name || '/' || f.SPECIFICATION),
                            LENGTH (f.order_name || '/' || f.SPECIFICATION),
                            LENGTH (f.order_name || '/' || f.SPECIFICATION)
                           )
                   )
                 WHEN '/'
                    THEN SUBSTR ((f.order_name || '/' || f.SPECIFICATION),
                                 0,
                                   LENGTH ((f.order_name || '/' || f.SPECIFICATION
                                           )
                                          )
                                 - 1
                                )
                 ELSE (f.order_name || '/' || f.SPECIFICATION)
              END
             ),
             f.unit_code,
             i.own_price
    ORDER BY i.rexp_code, i.order_code
    -----------------------------------------------------------------------------------------------
    | Id  | Operation                        | Name               | Rows  | Bytes | Cost (%CPU)| Ti
    -----------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                 |                    |     1 |   137 |  1244   (1)| 00
    |   1 |  SORT GROUP BY                   |                    |     1 |   137 |  1244   (1)| 00
    |   2 |   NESTED LOOPS OUTER             |                    |     1 |   137 |  1243   (0)| 00
    |   3 |    NESTED LOOPS                  |                    |     1 |   118 |  1242   (0)| 00
    |   4 |     NESTED LOOPS                 |                    |     1 |    77 |  1241   (0)| 00
    |   5 |      TABLE ACCESS BY INDEX ROWID | BASE_DICTIONARY    |     6 |   168 |     4   (0)| 00
    |*  6 |       INDEX RANGE SCAN           | PK_BASE_DICTIONARY |     6 |       |     2   (0)| 00
    |*  7 |      TABLE ACCESS BY INDEX ROWID | ICSI_ORDD          |     1 |    49 |  1241   (0)| 00
    |   8 |       BITMAP CONVERSION TO ROWIDS|                    |       |       |            |
    |*  9 |        BITMAP INDEX SINGLE VALUE | REXP_CODE          |       |       |            |
    |  10 |     TABLE ACCESS BY INDEX ROWID  | BASE_FEE           |     1 |    41 |     1   (0)| 00
    |* 11 |      INDEX UNIQUE SCAN           | BASE_FEE_PK        |     1 |       |     0   (0)| 00
    |* 12 |    TABLE ACCESS BY INDEX ROWID   | INS_FEE_TYPE       |     1 |    19 |     1   (0)| 00
    |* 13 |     INDEX UNIQUE SCAN            | PK_INS_FEE_TYPE    |     1 |       |     0   (0)| 00
    -----------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       6 - access("B"."GROUP_ID"='SYS_CHARGE')
       7 - filter("I"."BILL_NO"='201401241636045510' AND "I"."TOT_AMT"<>0 AND
                  ("I"."SETMAIN_FLG"='N' OR "I"."SETMAIN_FLG" IS NULL) AND "I"."HOSP_AREA"='001')
       9 - access("B"."ID"="I"."REXP_CODE")
      11 - access("F"."HOSP_AREA"='001' AND "I"."ORDER_CODE"="F"."ORDER_CODE")
      12 - filter("C"."ITEM_FLG"(+)='Y' AND "C"."PLAN_FLG"(+)='N' AND "C"."STARLINE_FLG"(+)='N')
      13 - access("F"."INSPAY_TYPE"="C"."FEE_TYPE_CODE"(+))
    
    BITMAP
    CREATE BITMAP INDEX BJCY.REXP_CODE ON BJCY.ICSI_ORDD
    
    REXP_CODE是个注记 就是不同的状态代码 123  所以肯定有大量重复
    
    干掉BITMAP 索引,创建组合索引
    
    ------------------------------------------------------------------------------------------------------
    | Id  | Operation                       | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
    ------------------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                |                    |     1 |   137 |    45   (3)| 00:00:01 |
    |   1 |  SORT GROUP BY                  |                    |     1 |   137 |    45   (3)| 00:00:01 |
    |   2 |   NESTED LOOPS OUTER            |                    |     1 |   137 |    44   (0)| 00:00:01 |
    |   3 |    NESTED LOOPS                 |                    |     1 |   118 |    43   (0)| 00:00:01 |
    |   4 |     NESTED LOOPS                |                    |     1 |    77 |    42   (0)| 00:00:01 |
    |   5 |      TABLE ACCESS BY INDEX ROWID| BASE_DICTIONARY    |     6 |   168 |     4   (0)| 00:00:01 |
    |*  6 |       INDEX RANGE SCAN          | PK_BASE_DICTIONARY |     6 |       |     2   (0)| 00:00:01 |
    |*  7 |      TABLE ACCESS BY INDEX ROWID| ICSI_ORDD          |     1 |    49 |    18   (0)| 00:00:01 |
    |*  8 |       INDEX RANGE SCAN          | REXP_CODE2         |    19 |       |     4   (0)| 00:00:01 |
    |   9 |     TABLE ACCESS BY INDEX ROWID | BASE_FEE           |     1 |    41 |     1   (0)| 00:00:01 |
    |* 10 |      INDEX UNIQUE SCAN          | BASE_FEE_PK        |     1 |       |     0   (0)| 00:00:01 |
    |* 11 |    TABLE ACCESS BY INDEX ROWID  | INS_FEE_TYPE       |     1 |    19 |     1   (0)| 00:00:01 |
    |* 12 |     INDEX UNIQUE SCAN           | PK_INS_FEE_TYPE    |     1 |       |     0   (0)| 00:00:01 |
    ------------------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       6 - access("B"."GROUP_ID"='SYS_CHARGE')
       7 - filter("I"."TOT_AMT"<>0 AND ("I"."SETMAIN_FLG"='N' OR "I"."SETMAIN_FLG" IS NULL))
       8 - access("I"."BILL_NO"='201401241636045510' AND "I"."HOSP_AREA"='001' AND
                  "B"."ID"="I"."REXP_CODE")
           filter("I"."HOSP_AREA"='001' AND "B"."ID"="I"."REXP_CODE")
      10 - access("F"."HOSP_AREA"='001' AND "I"."ORDER_CODE"="F"."ORDER_CODE")
      11 - filter("C"."ITEM_FLG"(+)='Y' AND "C"."PLAN_FLG"(+)='N' AND "C"."STARLINE_FLG"(+)='N')
      12 - access("F"."INSPAY_TYPE"="C"."FEE_TYPE_CODE"(+))
    这回走索引了
    

  • 相关阅读:
    FloatingActionButton
    OpenWrt for WR720N
    OpenWrt
    shell修改文件名(二)
    shell修改文件名(一)
    POJ 1300 Door Man(欧拉通路)
    USACO zerosum DFS 1A
    hadoop源代码解读namenode高可靠:HA;web方式查看namenode下信息;dfs/data决定datanode存储位置
    Leetcode-subsets
    单链表的各种操作 笔试 面试
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/3797914.html
Copyright © 2020-2023  润新知