qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          使用SQL Profile進(jìn)行SQL優(yōu)化案例

           一個社保系統(tǒng)的自助查詢系統(tǒng)查詢個人醫(yī)療費(fèi)用明細(xì)的查詢語句要用一分多鐘還沒查詢出來,語句如下:
            select * from  v_zzzd_ylbx_ylfymxcx where aac002='430703198202280017'
            從上面的語句可知是從視圖 v_zzzd_ylbx_ylfymxcx中查詢數(shù)據(jù)。v_zzzd_ylbx_ylfymxcx視圖的創(chuàng)建語句如下:
          create or replace view v_zzzd_ylbx_ylfymxcx as
          select a.indi_id aac001,a.idcard aac002,'' aof008,a.center_id aab301,
          a.name aac003,a.hospital_id akf008,d.hospital_name akf009,a.serial_no akf010,
          f.biz_name akf011,
          nvl(round(sum(b.real_pay),2),0) akf012,
          nvl(round(sum(case when b.fund_id = '003' then b.real_pay else 0 end),2),0) akf013, 0 akf014,0 akf015,0 akf016,
          nvl(round(sum(case when b.fund_id = '001' then b.real_pay else 0 end),2),0) ak093,
          nvl(round(sum(b.real_pay),2),0) - nvl(round(sum(case when b.fund_id in ('999','003') and b.policy_item_code in ( 'S00','S01','C001','C004''C006') then b.real_pay else 0 end),2),0) ak092,
          nvl(round(sum(case when b.fund_id in ('999','003') and b.policy_item_code in ( 'S00','S01','C001','C004''C006') then b.real_pay else 0 end),2),0) ak094,
          nvl(round(sum(case when b.fund_id in('003', '999') then b.real_pay else 0 end),2),0) ak095,
          a.fin_date akf017,to_char(nvl(a.in_days,0)) akf018,
          nvl(round(sum(case when b.fund_id = '003' then b.real_pay else 0 end),2),0) akf019,
          nvl(round(sum(case when b.fund_id in( '001','201','301' ) then b.real_pay else 0 end),2),0) akf020
          from  bs_insured h,mt_biz_fin a ,mt_pay_record_fin b,bs_disease c,bs_hospital d ,bs_hosp_level e ,bs_biztype f,bs_corp g
          where h.indi_id=a.indi_id
          and a.hospital_id = b.hospital_id
          and a.serial_no = b.serial_no
          and a.biz_type = f.biz_type
          and a.center_id = f.center_id
          and a.center_id=c.center_id
          and a.fin_disease=c.icd
          and a.hospital_id = d.hospital_id
          and d.hosp_level=e.hosp_level
          and a.biz_type in ('10','11','12','13','16','17')
          and a.valid_flag = 1
          and b.valid_flag = 1
          and a.pers_type in ('1','2')
          and a.corp_id = g.corp_id
          group by a.indi_id ,a.idcard ,a.center_id,a.name ,a.hospital_id ,d.hospital_name,a.serial_no , f.biz_name,a.fin_date,a.in_days;
            生成SQL Profile有兩種方式:自動和手動方式,這里使用自動方式來生成SQL Profile.
            下面創(chuàng)建一個SQL自動調(diào)整優(yōu)化任務(wù):
          SQL> declare
          2   my_task_name varchar2(30);
          3   my_sqltext clob;
          4  begin
          5   my_sqltext :='select * from  v_zzzd_ylbx_ylfymxcx where aac002=''430703198202280017''';
          6   my_task_name :=dbms_sqltune.create_tuning_task(
          7           sql_text => my_sqltext,
          8           user_name => 'INSUR_CHANGDE',
          9           scope=>'COMPREHENSIVE',
          10          time_limit=>60,
          11          task_name => 'my_sql_tuning_task_2014080803',
          12          description=>'Task to tune a query on table v_zzzd_ylbx_ylfymxcx');
          13  end;
          14  /
          PL/SQL procedure successfully completed.
          SQL>
          SQL> begin
          2  dbms_sqltune.execute_tuning_task(task_name=>'my_sql_tuning_task_2014080803');
          3  end;
          4  /
          PL/SQL procedure successfully completed.
          通過下面的語句查詢優(yōu)化建議
          SQL>select dbms_sqltune.report_tuning_task('my_sql_tuning_task_2014080803') from dual;
          GENERAL INFORMATION SECTION
          -------------------------------------------------------------------------------
          Tuning Task Name                  : my_sql_tuning_task_2014080803
          Tuning Task Owner                 : INSUR_CHANGDE
          Scope                             : COMPREHENSIVE
          Time Limit(seconds)               : 60
          Completion Status                 : COMPLETED
          Started at                        : 08/08/2014 19:42:47
          Completed at                      : 08/08/2014 19:43:49
          Number of Index Findings          : 1
          Number of SQL Restructure Findings: 1
          Number of Errors                  : 1
          -------------------------------------------------------------------------------
          Schema Name: INSUR_CHANGDE
          SQL ID     : 0rpt6bzp60cjm
          SQL Text   : select * from  v_zzzd_ylbx_ylfymxcx where
          aac002='430703198202280017'
          -------------------------------------------------------------------------------
          FINDINGS SECTION (2 findings)
          -------------------------------------------------------------------------------
          1- Index Finding (see explain plans section below)
          --------------------------------------------------
            通過創(chuàng)建一個或多個索引可以改進(jìn)此語句的執(zhí)行計劃。
            Recommendation (estimated benefit: 99.98%)
            ------------------------------------------
            - 考慮運(yùn)行可以改進(jìn)物理方案設(shè)計的 Access Advisor 或者創(chuàng)建推薦的索引。
            create index INSUR_CHANGDE.IDX$$_429C0001 on
            INSUR_CHANGDE.MT_BIZ_FIN("IDCARD",TO_NUMBER("VALID_FLAG"),"PERS_TYPE","BIZ_
            TYPE");
            這里在創(chuàng)建IDX$$_429C0001索引時,TO_NUMBER("VALID_FLAG")這是因為表MT_BIZ_FIN中的valid_flag是varchar2而視圖定義中寫成了valid_flag=1的原因
            - 考慮運(yùn)行可以改進(jìn)物理方案設(shè)計的 Access Advisor 或者創(chuàng)建推薦的索引。
            create index INSUR_CHANGDE.IDX$$_429C0002 on
            INSUR_CHANGDE.MT_PAY_RECORD_FIN("HOSPITAL_ID","SERIAL_NO");
            Rationale
            ---------
            創(chuàng)建推薦的索引可以顯著地改進(jìn)此語句的執(zhí)行計劃。但是, 使用典型的 SQL 工作量運(yùn)行 "Access Advisor"
            可能比單個語句更可取。通過這種方法可以獲得全面的索引建議案, 包括計算索引維護(hù)的開銷和附加的空間消耗。
            2- Restructure SQL finding (see plan 1 in explain plans section)
            ----------------------------------------------------------------
            謂詞 TO_NUMBER("A"."VALID_FLAG")=1 (在執(zhí)行計劃的行 ID 9 處使用) 包含索引列 "VALID_FLAG"
            的隱式數(shù)據(jù)類型轉(zhuǎn)換。此隱式數(shù)據(jù)類型轉(zhuǎn)換使優(yōu)化程序無法有效地使用表 "INSUR_CHANGDE"."MT_BIZ_FIN" 的索引。
            這是因為表MT_BIZ_FIN中的valid_flag是varchar2而視圖定義中寫成了valid_flag=1的原因
            Recommendation
            --------------
            - 將謂詞重寫為等價型以便利用索引。
            Rationale
            ---------
            如果謂詞是不等式條件或者如果存在關(guān)于索引列的表達(dá)式或隱式數(shù)據(jù)類型轉(zhuǎn)換, 則優(yōu)化程序無法使用索引。
          -------------------------------------------------------------------------------
          ERRORS SECTION
          -------------------------------------------------------------------------------
          - 當(dāng)前操作因超時而中斷。這是因為優(yōu)化任務(wù)設(shè)置的超時時間為60秒的原因
          -------------------------------------------------------------------------------
          EXPLAIN PLANS SECTION
          -------------------------------------------------------------------------------
          1- Original
          -----------
          Plan hash value: 3562745886
          ---------------------------------------------------------------------------------------------------------------
          | Id  | Operation                           | Name                    | Rows  | Bytes | Cost (%CPU)| Time     |
          ---------------------------------------------------------------------------------------------------------------
          |   0 | SELECT STATEMENT                    |                         |     7 |  1505 |   127K  (2)| 00:25:25 |
          |   1 |  HASH GROUP BY                      |                         |     7 |  1505 |   127K  (2)| 00:25:25 |
          |   2 |   NESTED LOOPS                      |                         |     7 |  1505 |   127K  (2)| 00:25:25 |
          |   3 |    NESTED LOOPS                     |                         |     7 |  1491 |   127K  (2)| 00:25:25 |
          |   4 |     NESTED LOOPS                    |                         |     7 |  1253 |   127K  (2)| 00:25:25 |
          |   5 |      NESTED LOOPS                   |                         |     7 |  1127 |   127K  (2)| 00:25:25 |
          |   6 |       NESTED LOOPS                  |                         |     7 |  1085 |   127K  (2)| 00:25:25 |
          |   7 |        NESTED LOOPS                 |                         |    14 |  1554 |   127K  (2)| 00:25:25 |
          |   8 |         NESTED LOOPS                |                         |    14 |  1484 |   127K  (2)| 00:25:25 |
          |*  9 |          TABLE ACCESS FULL          | MT_BIZ_FIN              |    14 |  1232 |   127K  (2)| 00:25:25 |
          |  10 |          TABLE ACCESS BY INDEX ROWID| BS_BIZTYPE              |     1 |    18 |     1   (0)| 00:00:01 |
          |* 11 |           INDEX UNIQUE SCAN         | PK_BS_BIZTYPE           |     1 |       |     1   (0)| 00:00:01 |
          |* 12 |         INDEX UNIQUE SCAN           | PK_BS_CORP              |     1 |     5 |     1   (0)| 00:00:01 |
          |* 13 |        TABLE ACCESS BY INDEX ROWID  | MT_PAY_RECORD_FIN       |     1 |    44 |     1   (0)| 00:00:01 |
          |* 14 |         INDEX RANGE SCAN            | IDX_MT_PAY_RECORD_FIN_1 |     1 |       |     1   (0)| 00:00:01 |
          |* 15 |       INDEX UNIQUE SCAN             | PK_BS_INSURED           |     1 |     6 |     1   (0)| 00:00:01 |
          |* 16 |      INDEX RANGE SCAN               | INX_BS_DISEASE_01       |     1 |    18 |     1   (0)| 00:00:01 |
          |  17 |     TABLE ACCESS BY INDEX ROWID     | BS_HOSPITAL             |     1 |    34 |     1   (0)| 00:00:01 |
          |* 18 |      INDEX UNIQUE SCAN              | PK_BS_HOSPITAL          |     1 |       |     1   (0)| 00:00:01 |
          |* 19 |    INDEX UNIQUE SCAN                | PK_BS_HOSP_LEVEL        |     1 |     2 |     1   (0)| 00:00:01 |
          ---------------------------------------------------------------------------------------------------------------
          Predicate Information (identified by operation id):
          ---------------------------------------------------
          9 - filter("A"."IDCARD"='430703198202280017' AND TO_NUMBER("A"."VALID_FLAG")=1 AND
          ("A"."PERS_TYPE"='1' OR "A"."PERS_TYPE"='2') AND ("A"."BIZ_TYPE"='10' OR "A"."BIZ_TYPE"='11' OR
          "A"."BIZ_TYPE"='12' OR "A"."BIZ_TYPE"='13' OR "A"."BIZ_TYPE"='16' OR "A"."BIZ_TYPE"='17'))
          11 - access("A"."CENTER_ID"="F"."CENTER_ID" AND "A"."BIZ_TYPE"="F"."BIZ_TYPE")
          12 - access("A"."CORP_ID"="G"."CORP_ID")
          13 - filter(TO_NUMBER("B"."VALID_FLAG")=1)
          14 - access("A"."HOSPITAL_ID"="B"."HOSPITAL_ID" AND "A"."SERIAL_NO"="B"."SERIAL_NO")
          15 - access("H"."INDI_ID"="A"."INDI_ID")
          16 - access("A"."CENTER_ID"="C"."CENTER_ID" AND "A"."FIN_DISEASE"="C"."ICD")
          18 - access("A"."HOSPITAL_ID"="D"."HOSPITAL_ID")
          19 - access("D"."HOSP_LEVEL"="E"."HOSP_LEVEL")
            這是按優(yōu)化建議創(chuàng)建兩個索引后的執(zhí)行計劃
          2- Using New Indices
          --------------------
          Plan hash value: 2373509962
          ----------------------------------------------------------------------------------------------------------
          | Id  | Operation                            | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
          ----------------------------------------------------------------------------------------------------------
          |   0 | SELECT STATEMENT                     |                   |     7 |  1505 |    14   (8)| 00:00:01 |
          |   1 |  HASH GROUP BY                       |                   |     7 |  1505 |    14   (8)| 00:00:01 |
          |   2 |   NESTED LOOPS                       |                   |     7 |  1505 |    13   (0)| 00:00:01 |
          |   3 |    NESTED LOOPS                      |                   |     7 |  1470 |    12   (0)| 00:00:01 |
          |   4 |     NESTED LOOPS                     |                   |     7 |  1428 |    11   (0)| 00:00:01 |
          |   5 |      NESTED LOOPS                    |                   |     7 |  1302 |    10   (0)| 00:00:01 |
          |   6 |       NESTED LOOPS                   |                   |     7 |  1288 |     9   (0)| 00:00:01 |
          |   7 |        NESTED LOOPS                  |                   |     7 |  1050 |     7   (0)| 00:00:01 |
          |   8 |         NESTED LOOPS                 |                   |    14 |  1484 |     4   (0)| 00:00:01 |
          |   9 |          INLIST ITERATOR             |                   |       |       |            |          |
          |  10 |           TABLE ACCESS BY INDEX ROWID| MT_BIZ_FIN        |    14 |  1232 |     2   (0)| 00:00:01 |
          |* 11 |            INDEX RANGE SCAN          | IDX$$_429C0001    |    14 |       |     1   (0)| 00:00:01 |
          |  12 |          TABLE ACCESS BY INDEX ROWID | BS_BIZTYPE        |     1 |    18 |     1   (0)| 00:00:01 |
          |* 13 |           INDEX UNIQUE SCAN          | PK_BS_BIZTYPE     |     1 |       |     1   (0)| 00:00:01 |
          |* 14 |         TABLE ACCESS BY INDEX ROWID  | MT_PAY_RECORD_FIN |     1 |    44 |     1   (0)| 00:00:01 |
          |* 15 |          INDEX RANGE SCAN            | IDX$$_429C0002    |     1 |       |     1   (0)| 00:00:01 |
          |  16 |        TABLE ACCESS BY INDEX ROWID   | BS_HOSPITAL       |     1 |    34 |     1   (0)| 00:00:01 |
          |* 17 |         INDEX UNIQUE SCAN            | PK_BS_HOSPITAL    |     1 |       |     1   (0)| 00:00:01 |
          |* 18 |       INDEX UNIQUE SCAN              | PK_BS_HOSP_LEVEL  |     1 |     2 |     1   (0)| 00:00:01 |
          |* 19 |      INDEX RANGE SCAN                | INX_BS_DISEASE_01 |     1 |    18 |     1   (0)| 00:00:01 |
          |* 20 |     INDEX UNIQUE SCAN                | PK_BS_INSURED     |     1 |     6 |     1   (0)| 00:00:01 |
          |* 21 |    INDEX UNIQUE SCAN                 | PK_BS_CORP        |     1 |     5 |     1   (0)| 00:00:01 |
          ----------------------------------------------------------------------------------------------------------
          Predicate Information (identified by operation id):
          ---------------------------------------------------
          11 - access("A"."IDCARD"='430703198202280017' AND "MT_BIZ_FIN".???)
          filter("A"."BIZ_TYPE"='10' OR "A"."BIZ_TYPE"='11' OR "A"."BIZ_TYPE"='12' OR
          "A"."BIZ_TYPE"='13' OR "A"."BIZ_TYPE"='16' OR "A"."BIZ_TYPE"='17')
          13 - access("A"."CENTER_ID"="F"."CENTER_ID" AND "A"."BIZ_TYPE"="F"."BIZ_TYPE")
          14 - filter(TO_NUMBER("B"."VALID_FLAG")=1)
          15 - access("A"."HOSPITAL_ID"="B"."HOSPITAL_ID" AND "A"."SERIAL_NO"="B"."SERIAL_NO")
          17 - access("A"."HOSPITAL_ID"="D"."HOSPITAL_ID")
          18 - access("D"."HOSP_LEVEL"="E"."HOSP_LEVEL")
          19 - access("A"."CENTER_ID"="C"."CENTER_ID" AND "A"."FIN_DISEASE"="C"."ICD")
          20 - access("H"."INDI_ID"="A"."INDI_ID")
          21 - access("A"."CORP_ID"="G"."CORP_ID")
          -------------------------------------------------------------------------------
            因為前一次優(yōu)化任務(wù)因為超時中斷了所以再次進(jìn)行SQL自動優(yōu)化任務(wù),并將超時時間設(shè)置為600秒
          SQL> declare
          2   my_task_name varchar2(30);
          3   my_sqltext clob;
          4  begin
          5   my_sqltext :='select * from  v_zzzd_ylbx_ylfymxcx where aac002=''430703198202280017''';
          6   my_task_name :=dbms_sqltune.create_tuning_task(
          7           sql_text => my_sqltext,
          8           user_name => 'INSUR_CHANGDE',
          9           scope=>'COMPREHENSIVE',
          10          time_limit=>600,
          11          task_name => 'my_sql_tuning_task_2014080804',
          12          description=>'Task to tune a query on table v_zzzd_ylbx_ylfymxcx');
          13  end;
          14  /
          PL/SQL procedure successfully completed.
          SQL>
          SQL> begin
          2  dbms_sqltune.execute_tuning_task(task_name=>'my_sql_tuning_task_2014080804');
          3  end;
          4  /
          PL/SQL procedure successfully completed.
          通過下面的語句查詢優(yōu)化建議
          SQL>select dbms_sqltune.report_tuning_task('my_sql_tuning_task_2014080806') from dual;
          GENERAL INFORMATION SECTION
          -------------------------------------------------------------------------------
          Tuning Task Name                  : my_sql_tuning_task_2014080804
          Tuning Task Owner                 : INSUR_CHANGDE
          Scope                             : COMPREHENSIVE
          Time Limit(seconds)               : 600
          Completion Status                 : COMPLETED
          Started at                        : 08/08/2014 20:03:46
          Completed at                      : 08/08/2014 20:04:27
          Number of SQL Profile Findings    : 1
          -------------------------------------------------------------------------------
          Schema Name: INSUR_CHANGDE
          SQL ID     : 0rpt6bzp60cjm
          SQL Text   : select * from  v_zzzd_ylbx_ylfymxcx where
          aac002='430703198202280017'
          -------------------------------------------------------------------------------
          FINDINGS SECTION (1 finding)
          -------------------------------------------------------------------------------
          1- SQL Profile Finding (see explain plans section below)
          --------------------------------------------------------
            為此語句找到了性能更好的執(zhí)行計劃。
            Recommendation (estimated benefit: 28.75%)
            ------------------------------------------
            - 考慮接受推薦的 SQL 概要文件。
          execute dbms_sqltune.accept_sql_profile(task_name =>
          'my_sql_tuning_task_2014080804', replace => TRUE);
          -------------------------------------------------------------------------------
          EXPLAIN PLANS SECTION
          -------------------------------------------------------------------------------
          1- Original With Adjusted Cost
          ------------------------------
          Plan hash value: 3514293130
          -----------------------------------------------------------------------------------------------------------
          | Id  | Operation                             | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
          -----------------------------------------------------------------------------------------------------------
          |   0 | SELECT STATEMENT                      |                   |   251 | 53965 |    36   (6)| 00:00:01 |
          |   1 |  HASH GROUP BY                        |                   |   251 | 53965 |    36   (6)| 00:00:01 |
          |   2 |   NESTED LOOPS                        |                   |   251 | 53965 |    35   (3)| 00:00:01 |
          |   3 |    NESTED LOOPS                       |                   |   252 | 52920 |    34   (3)| 00:00:01 |
          |   4 |     NESTED LOOPS                      |                   |   252 | 51408 |    33   (4)| 00:00:01 |
          |*  5 |      HASH JOIN                        |                   |   251 | 46686 |    32   (4)| 00:00:01 |
          |*  6 |       TABLE ACCESS BY INDEX ROWID     | MT_PAY_RECORD_FIN |     1 |    44 |     1   (0)| 00:00:01 |
          |   7 |        NESTED LOOPS                   |                   |    28 |  4704 |    28   (0)| 00:00:01 |
          |   8 |         NESTED LOOPS                  |                   |    28 |  3472 |    22   (0)| 00:00:01 |
          |   9 |          NESTED LOOPS                 |                   |    79 |  9638 |    21   (0)| 00:00:01 |
          |  10 |           INLIST ITERATOR             |                   |       |       |            |          |
          |  11 |            TABLE ACCESS BY INDEX ROWID| MT_BIZ_FIN        |    79 |  6952 |     6   (0)| 00:00:01 |
          |* 12 |             INDEX RANGE SCAN          | IDX$$_429C0001    |    27 |       |     1   (0)| 00:00:01 |
          |  13 |           TABLE ACCESS BY INDEX ROWID | BS_HOSPITAL       |     1 |    34 |     1   (0)| 00:00:01 |
          |* 14 |            INDEX UNIQUE SCAN          | PK_BS_HOSPITAL    |     1 |       |     1   (0)| 00:00:01 |
          |* 15 |          INDEX UNIQUE SCAN            | PK_BS_HOSP_LEVEL  |     1 |     2 |     1   (0)| 00:00:01 |
          |* 16 |         INDEX RANGE SCAN              | IDX$$_429C0002    |     1 |       |     1   (0)| 00:00:01 |
          |  17 |       TABLE ACCESS FULL               | BS_BIZTYPE        |    96 |  1728 |     3   (0)| 00:00:01 |
          |* 18 |      INDEX RANGE SCAN                 | INX_BS_DISEASE_01 |     1 |    18 |     1   (0)| 00:00:01 |
          |* 19 |     INDEX UNIQUE SCAN                 | PK_BS_INSURED     |     1 |     6 |     1   (0)| 00:00:01 |
          |* 20 |    INDEX UNIQUE SCAN                  | PK_BS_CORP        |     1 |     5 |     1   (0)| 00:00:01 |
          -----------------------------------------------------------------------------------------------------------
          Predicate Information (identified by operation id):
          ---------------------------------------------------
          5 - access("A"."BIZ_TYPE"="F"."BIZ_TYPE" AND "A"."CENTER_ID"="F"."CENTER_ID")
          6 - filter("B"."VALID_FLAG"='1')
          12 - access("A"."IDCARD"='430703198202280017' AND "A"."VALID_FLAG"='1' AND ("A"."PERS_TYPE"='1'
          OR "A"."PERS_TYPE"='2'))
          filter("A"."BIZ_TYPE"='10' OR "A"."BIZ_TYPE"='11' OR "A"."BIZ_TYPE"='12' OR
          "A"."BIZ_TYPE"='13' OR "A"."BIZ_TYPE"='16' OR "A"."BIZ_TYPE"='17')
          14 - access("A"."HOSPITAL_ID"="D"."HOSPITAL_ID")
          15 - access("D"."HOSP_LEVEL"="E"."HOSP_LEVEL")
          16 - access("A"."HOSPITAL_ID"="B"."HOSPITAL_ID" AND "A"."SERIAL_NO"="B"."SERIAL_NO")
          18 - access("A"."CENTER_ID"="C"."CENTER_ID" AND "A"."FIN_DISEASE"="C"."ICD")
          19 - access("H"."INDI_ID"="A"."INDI_ID")
          20 - access("A"."CORP_ID"="G"."CORP_ID")
          2- Using SQL Profile
          --------------------
          Plan hash value: 484693682
          -----------------------------------------------------------------------------------------------------------
          | Id  | Operation                             | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
          -----------------------------------------------------------------------------------------------------------
          |   0 | SELECT STATEMENT                      |                   |   251 | 53965 |    25   (4)| 00:00:01 |
          |   1 |  HASH GROUP BY                        |                   |   251 | 53965 |    25   (4)| 00:00:01 |
          |*  2 |   TABLE ACCESS BY INDEX ROWID         | MT_PAY_RECORD_FIN |     1 |    44 |     1   (0)| 00:00:01 |
          |   3 |    NESTED LOOPS                       |                   |   251 | 53965 |    24   (0)| 00:00:01 |
          |   4 |     NESTED LOOPS                      |                   |    28 |  4788 |    19   (6)| 00:00:01 |
          |   5 |      NESTED LOOPS                     |                   |    28 |  4284 |    18   (6)| 00:00:01 |
          |   6 |       NESTED LOOPS                    |                   |    28 |  4116 |    17   (6)| 00:00:01 |
          |   7 |        NESTED LOOPS                   |                   |    28 |  4060 |    16   (7)| 00:00:01 |
          |   8 |         NESTED LOOPS                  |                   |    28 |  3108 |    10   (0)| 00:00:01 |
          |*  9 |          HASH JOIN                    |                   |    28 |  2968 |     9   (0)| 00:00:01 |
          |  10 |           TABLE ACCESS FULL           | BS_BIZTYPE        |    96 |  1728 |     3   (0)| 00:00:01 |
          |  11 |           INLIST ITERATOR             |                   |       |       |            |          |
          |  12 |            TABLE ACCESS BY INDEX ROWID| MT_BIZ_FIN        |    79 |  6952 |     6   (0)| 00:00:01 |
          |* 13 |             INDEX RANGE SCAN          | IDX$$_429C0001    |    27 |       |     1   (0)| 00:00:01 |
          |* 14 |          INDEX UNIQUE SCAN            | PK_BS_CORP        |     1 |     5 |     1   (0)| 00:00:01 |
          |  15 |         TABLE ACCESS BY INDEX ROWID   | BS_HOSPITAL       |     1 |    34 |     1   (0)| 00:00:01 |
          |* 16 |          INDEX UNIQUE SCAN            | PK_BS_HOSPITAL    |     1 |       |     1   (0)| 00:00:01 |
          |* 17 |        INDEX UNIQUE SCAN              | PK_BS_HOSP_LEVEL  |     1 |     2 |     1   (0)| 00:00:01 |
          |* 18 |       INDEX UNIQUE SCAN               | PK_BS_INSURED     |     1 |     6 |     1   (0)| 00:00:01 |
          |* 19 |      INDEX RANGE SCAN                 | INX_BS_DISEASE_01 |     1 |    18 |     1   (0)| 00:00:01 |
          |* 20 |     INDEX RANGE SCAN                  | IDX$$_429C0002    |     1 |       |     1   (0)| 00:00:01 |
          -----------------------------------------------------------------------------------------------------------
          Predicate Information (identified by operation id):
          ---------------------------------------------------
          2 - filter("B"."VALID_FLAG"='1')
          9 - access("A"."BIZ_TYPE"="F"."BIZ_TYPE" AND "A"."CENTER_ID"="F"."CENTER_ID")
          13 - access("A"."IDCARD"='430703198202280017' AND "A"."VALID_FLAG"='1' AND ("A"."PERS_TYPE"='1'
          OR "A"."PERS_TYPE"='2'))
          filter("A"."BIZ_TYPE"='10' OR "A"."BIZ_TYPE"='11' OR "A"."BIZ_TYPE"='12' OR
          "A"."BIZ_TYPE"='13' OR "A"."BIZ_TYPE"='16' OR "A"."BIZ_TYPE"='17')
          14 - access("A"."CORP_ID"="G"."CORP_ID")
          16 - access("A"."HOSPITAL_ID"="D"."HOSPITAL_ID")
          17 - access("D"."HOSP_LEVEL"="E"."HOSP_LEVEL")
          18 - access("H"."INDI_ID"="A"."INDI_ID")
          19 - access("A"."CENTER_ID"="C"."CENTER_ID" AND "A"."FIN_DISEASE"="C"."ICD")
          20 - access("A"."HOSPITAL_ID"="B"."HOSPITAL_ID" AND "A"."SERIAL_NO"="B"."SERIAL_NO")
          -------------------------------------------------------------------------------

          posted on 2014-08-13 10:25 順其自然EVO 閱讀(422) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 定日县| 浏阳市| 彩票| 仙居县| 静海县| 全南县| 姚安县| 东丽区| 呼伦贝尔市| 江西省| 普兰县| 三台县| 微博| 手机| 伊宁县| 平果县| 万安县| 丰镇市| 文水县| 印江| 荣昌县| 新沂市| 千阳县| 利津县| 遂川县| 安康市| 包头市| 东安县| 民丰县| 浦江县| 凤凰县| 布尔津县| 新干县| 大姚县| 灌南县| 临颍县| 绥宁县| 沙雅县| 湄潭县| 井研县| 云阳县|