查看: 3512|回复: 16

[性能调整] 求助 sql优化

[复制链接]
论坛徽章:
14
会员2007贡献徽章
日期:2007-09-26 18:42:10生肖徽章2007版:鸡
日期:2009-10-29 16:15:30生肖徽章2007版:兔
日期:2009-04-14 19:32:34生肖徽章2007版:猴
日期:2008-11-28 10:39:32奥运会纪念徽章:摔跤
日期:2008-08-12 10:59:32奥运会纪念徽章:艺术体操
日期:2008-08-07 09:43:42奥运会纪念徽章:举重
日期:2008-05-04 17:12:35生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53
发表于 2010-7-8 20:07 | 显示全部楼层 |阅读模式
今天遇到一个性能低下的sql,希望坛子里的兄弟们帮忙看一下,给个建议~

SELECT pc.work_part AS partition_no,
          ssu.dagr_stu_cd ssu_dagr_stu_cd,
          ssu.subm_stu_nme ssu_subm_stu_nme,
          ssu.subm_usr_id ssu_subm_usr_id,
          ssu.subm_id ssu_subm_id,
          ssu.lot_lims_prod_id ssu_lot_lims_prod_id,
          ssu.samp_cre_init ssu_samp_cre_init,
          ssu.samp_rec_init ssu_samp_rec_init,
          ssu.stg_seq_no ssu_stg_seq_no,
          ssu.stg_nme ssu_stg_nme,
          ssu.subm_cre_init ssu_subm_cre_init,
          ssu.subm_cre_dt ssu_subm_cre_dt,
          ssu_onl.sta_hst_cre_init ssu_subm_onl_init,
          ssu_onl.sta_hst_cre_dt ssu_subm_onl_dt,
          ssu.subm_sts_cd ssu_subm_sts_cd,
          ssu.subm_cnd_cd ssu_subm_cnd_cd,
          ssu.samp_cre_dt ssu_samp_cre_dt,
          ssu.samp_rec_dt ssu_samp_rec_dt,
          ssu.stg_cre_dt ssu_stg_cre_dt,
          ssu.stg_cre_init ssu_stg_cre_init,
          ssu.stg_cyc_dd ssu_stg_cyc_dd,
          ssu.stg_du_dt ssu_stg_du_dt,
          ssu.stg_pl_cd ssu_stg_pl_cd,
          ssu.stg_req_id ssu_stg_req_id,
          ssu.stg_slot_flag ssu_stg_slot_flag,
          ssu.stg_slot_no ssu_stg_slot_no,
          ssu.subm_orgn_txt ssu_subm_orgn_txt,
          ssu.subm_prnt_id ssu_subm_prnt_id,
          ssu.char_txt_y_n ssu_char_txt_y_n,
          ssu.bin_fil_txt_y_n ssu_bin_fil_txt_y_n,
          ssu.bin_obj_txt_y_n ssu_bin_obj_txt_y_n,
          ssu.stu_id ssu_stu_id,
          ssu.stu_ver ssu_stu_ver,
          ssu.stu_gen ssu_stu_gen,
          asa.dagr_mat_cd asa_dagr_mat_cd,
          asa.samp_id asa_samp_id,
          asa.slot_nme_val asa_slot_nme_val,
          asa.samp_src_nme asa_samp_src_nme,
          asa.samp_cre_dt asa_samp_cre_dt,
          asa.samp_cre_init asa_samp_cre_init,
          asa_onl.sta_hst_cre_dt asa_samp_onl_dt,
          NVL (asa_onl.sta_hst_cre_dt, asa.samp_cre_dt) asa_samp_recv_dt,
          asa_app.sta_hst_cre_dt asa_samp_app_dt,
          asa.samp_sts_cd asa_samp_sts_cd,
          asa.samp_cnd_cd asa_samp_cnd_cd,
          asa.samp_anly_init asa_samp_anly_init,
          asa.samp_cnd_lvl asa_samp_cnd_lvl,
          asa.samp_dt asa_samp_dt,
          asa.samp_prnt_id asa_samp_prnt_id,
          asa.samp_req_init asa_samp_req_init,
          asa.samp_res_nme asa_samp_res_nme,
          asa.samp_res_tp asa_samp_res_tp,
          asa.samp_subm_init asa_samp_subm_init,
          asa.samp_supv_init asa_samp_supv_init,
          asa.samp_tp asa_samp_tp,
          asa.samp_usr_id asa_samp_usr_id,
          asa.char_txt_y_n asa_char_txt_y_n,
          asa.bin_fil_txt_y_n asa_bin_fil_txt_y_n,
          asa.bin_obj_txt_y_n asa_bin_obj_txt_y_n,
          asa.mat_id asa_mat_id,
          asa.mat_ver asa_mat_ver,
          asa.mat_gen asa_mat_gen,
          asa.samp_pl_id asa_samp_pl_id,
          asa.samp_pl_ver asa_samp_pl_ver,
          asa.samp_pl_gen asa_samp_pl_gen,
          ata.task_met_nme ata_task_met_nme,
          ata.dagr_met_cd ata_dagr_met_cd,
          ata.task_id ata_task_id,
          ata.spec_nme_id ata_spec_nme_id,
          ata.spec_nme_ver ata_spec_nme_ver,
          ata.wlst_id ata_wlst_id,
          ata.wlst_nme ata_wlst_nme,
          ata.wlst_sts ata_wlst_sts,
          ata.wlst_cnd ata_wlst_cnd,
          ata.task_cre_dt ata_task_cre_dt,
          ata.task_cre_init ata_task_cre_init,
          ata.task_sts_cd ata_task_sts_cd,
          ata.task_cnd_cd ata_task_cnd_cd,
          ata.inst_cls_nme ata_inst_cls_nme,
          ata.inst_nme ata_inst_nme,
          ata.oper_nme ata_oper_nme,
          ata.res_unex_cd ata_res_unex_cd,
          ata.task_anly_init ata_task_anly_init,
          ata.task_cnd_lvl ata_task_cnd_lvl,
          ata.task_do_dt ata_task_do_dt,
          ata.task_du_dt ata_task_du_dt,
          ata.task_prnt_id ata_task_prnt_id,
          ata.task_seq_no ata_task_seq_no,
          ata.wlst_seq_no ata_wlst_seq_no,
          ata.char_txt_y_n ata_char_txt_y_n,
          ata.bin_fil_txt_y_n ata_bin_fil_txt_y_n,
          ata.bin_obj_txt_y_n ata_bin_obj_txt_y_n,
          ata.oper_id ata_oper_id,
          ata.oper_ver ata_oper_ver,
          ata.oper_gen ata_oper_gen,
          ata.met_id ata_met_id,
          ata.met_ver ata_met_ver,
          ata.met_gen ata_met_gen,
          ata.inst_id ata_inst_id,
          ata.inst_ver ata_inst_ver,
          ata.inst_gen ata_inst_gen,
          ata.spec_nme_gen ata_spec_nme_gen,
          are.rslt_id are_rslt_id,
          are.rslt_ver are_rslt_ver,
          are.rslt_chg_nme are_rslt_chg_nme,
          are.tspec_id are_tspec_id,
          are.tspec_ver are_tspec_ver,
          are.rslt_cnd_lvl are_rslt_cnd_lvl,
          are.rslt_sts_cd are_rslt_sts_cd,
          are.rslt_cnd_cd are_rslt_cnd_cd,
          are.rslt_cmp_nme are_rslt_cmp_nme,
          are.rslt_no_val are_rslt_no_val,
          are.rslt_txt_val are_rslt_txt_val,
          analysis_results_p.convert_txt_rslt_to_no_rslt (are.rslt_val_tp,
                                                          are.rslt_txt_val
          )
             are_rslt_txtno_val,
          are.rslt_mu are_rslt_mu,
          are.rslt_ent_dt are_rslt_ent_dt,
          are.rslt_ent_init are_rslt_ent_init,
          are.task_rep_no are_task_rep_no,
          are.task_ver are_task_ver,
          are.rslt_in_lim are_rslt_in_lim,
          are.rslt_in_spec are_rslt_in_spec,
          are.rslt_pl_cd are_rslt_pl_cd,
          are.rslt_req_cd are_rslt_req_cd,
          are.rslt_orgn_cd are_rslt_orgn_cd,
          are.rslt_unit are_rslt_unit,
          are.rslt_tm_val_dt are_rslt_tm_val_dt,
          are.rslt_val_tp are_rslt_val_tp,
          are.rslt_cre_dt are_rslt_cre_dt,
          are.rslt_cre_init are_rslt_cre_init,
          are.rslt_rep_y_n are_rslt_rep_y_n,
          are.char_txt_y_n are_char_txt_y_n,
          are.bin_fil_txt_y_n are_bin_fil_txt_y_n,
          are.bin_obj_txt_y_n are_bin_obj_txt_y_n,
          are.mu_id are_mu_id,
          are.mu_ver are_mu_ver,
          NVL (ssu.subm_id, -999) ssu_subm_id_key,
          NVL (asa.samp_id, -999) asa_samp_id_key,
          NVL (ata.task_id, -999) ata_task_id_key,
          NVL (are.rslt_id, -999) are_rslt_id_key,
          NVL (are.rslt_ver, -999) are_rslt_ver_key
   FROM qdwload.partition_ctrl pc,
        gdw.bo_analysis_work_keys_t key,
        gdw.stage_submission_t ssu,
        gdw.analysis_samples_t asa,
        gdw.analysis_tasks_t ata,
        gdw.analysis_results_t are,
        (SELECT samp_id, MIN (sta_hst_cre_dt) sta_hst_cre_dt
         FROM gdw.samples_hist_t
         WHERE sta_id_ini_nme = 'INCOMPLETE' AND sta_id_fn_nme = 'ONLINE'
         GROUP BY samp_id) asa_onl,
        (SELECT samp_id, MAX (sta_hst_cre_dt) sta_hst_cre_dt
         FROM gdw.samples_hist_t
         WHERE sta_id_fn_nme = 'APPROVED'
         GROUP BY samp_id) asa_app,
        (SELECT hist.subm_id, hist.sta_hst_cre_init, hist.sta_hst_cre_dt
         FROM gdw.submission_hist_t hist,
              (SELECT subm_id, MIN (sta_hst_cre_dt) sta_hst_cre_dt
               FROM gdw.submission_hist_t
               WHERE sta_id_ini_nme = 'INCOMPLETE' AND sta_id_fn_nme = 'ONLINE'
               GROUP BY subm_id) mini
         WHERE mini.subm_id = hist.subm_id
               AND mini.sta_hst_cre_dt = hist.sta_hst_cre_dt) ssu_onl
   WHERE     pc.id = 1
         AND key.ssu_subm_id = ssu.subm_id
         AND key.asa_samp_id = asa.samp_id(+)
         AND key.ata_task_id = ata.task_id(+)
         AND key.are_rslt_id = are.rslt_id(+)
         AND key.are_rslt_ver = are.rslt_ver(+)
         AND key.asa_samp_id = asa_onl.samp_id(+)
         AND key.asa_samp_id = asa_app.samp_id(+)
         AND key.ssu_subm_id = ssu_onl.subm_id(+);

以下是涉及到的表的数据量:
select count(1) from qdwload.partition_ctrl  --1
select count(1) from gdw.bo_analysis_work_keys_t --114485
select count(1) from   gdw.stage_submission_t --1866447
select count(1) from  gdw.analysis_samples_t --7243425
select count(1) from gdw.analysis_tasks_t --18170085
select count(1) from   gdw.analysis_results_t --19966341
select count(1) from gdw.submission_hist_t --3007502
select count(1) from gdw.samples_hist_t--13436930

原始的执行计划是:
The execution plan for this query is:

Elapsed: 00:12:51.31

Execution Plan

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

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

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

|   0 | SELECT STATEMENT                    |                         |   114K|
  168M|       |   900K  (1)|

|   1 |  HASH JOIN RIGHT OUTER              |                         |   114K|
  168M|       |   900K  (1)|

|   2 |   VIEW                              |                         |     1 |
   44 |       |  6955   (2)|

|   3 |    FILTER                           |                         |       |
      |       |            |

|   4 |     HASH GROUP BY                   |                         |     1 |
  105 |       |  6955   (2)|

|   5 |      MERGE JOIN                     |                         |   722K|
   72M|       |  6898   (1)|

|   6 |       TABLE ACCESS BY INDEX ROWID   | SUBMISSION_HIST_T       |  3005K|
  137M|       |   827   (1)|

|   7 |        INDEX FULL SCAN              | SUBM_HIST_SUBM_INDX     |  3005K|
      |       |    26   (0)|

|   8 |       SORT JOIN                     |                         |   436K|
   23M|    60M|  6071   (1)|

|   9 |        INDEX RANGE SCAN             | SUBMISSION_HIST_IDX01   |   436K|
   23M|       |     5   (0)|

|  10 |   NESTED LOOPS OUTER                |                         |   114K|
  163M|       |   893K  (1)|

|  11 |    NESTED LOOPS OUTER               |                         |   114K|
  127M|       |   664K  (1)|

|  12 |     HASH JOIN                       |                         |   114K|
   89M|    51M|   434K  (1)|

|  13 |      HASH JOIN OUTER                |                         |   114K|
   50M|    10M|   378K  (1)|

|  14 |       HASH JOIN OUTER               |                         |   114K|
8955K|  7840K|   150K  (1)|

|  15 |        HASH JOIN OUTER              |                         |   114K|
6492K|  5376K|   103K  (2)|

|  16 |         NESTED LOOPS                |                         |   114K|
4029K|       |   281   (2)|

|  17 |          TABLE ACCESS BY INDEX ROWID| PARTITION_CTRL          |     1 |
    6 |       |     1   (0)|

|  18 |           INDEX UNIQUE SCAN         | PARTITION_CTRL_PK       |     1 |
      |       |     0   (0)|

|  19 |          TABLE ACCESS FULL          | BO_ANALYSIS_WORK_KEYS_T |   114K|
3358K|       |   280   (2)|

|  20 |         VIEW                        |                         |  5076K|
  106M|       | 95020   (2)|

|  21 |          HASH GROUP BY              |                         |  5076K|
  174M|   539M| 95020   (2)|

|  22 |           INDEX FAST FULL SCAN      | SAMPLES_HIST_IDX01      |  6655K|
  228M|       | 41190   (2)|

|  23 |        VIEW                         |                         |  2722K|
   57M|       | 42260   (1)|

|  24 |         HASH GROUP BY               |                         |  2722K|
  147M|   399M| 42260   (1)|

|  25 |          INDEX RANGE SCAN           | SAMPLES_HIST_IDX01      |  3052K|
  165M|       | 42260   (1)|

|  26 |       TABLE ACCESS FULL             | ANALYSIS_SAMPLES_T      |  7244K|
2632M|       | 91833   (1)|

|  27 |      TABLE ACCESS FULL              | STAGE_SUBMISSION_T      |  1866K|
  630M|       | 21785   (1)|

|  28 |     TABLE ACCESS BY INDEX ROWID     | ANALYSIS_TASKS_T        |     1 |
  349 |       |     2   (0)|

|  29 |      INDEX UNIQUE SCAN              | SYS_C004236             |     1 |
      |       |     1   (0)|

|  30 |    TABLE ACCESS BY INDEX ROWID      | ANALYSIS_RESULTS_T      |     1 |
  336 |       |     2   (0)|

|  31 |     INDEX UNIQUE SCAN               | ANALYSIS_RES_PK         |     1 |
      |       |     1   (0)|

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


Note
-----
   - 'PLAN_TABLE' is old version


Statistics
----------------------------------------------------------
       1818  recursive calls
          0  db block gets
    4013501  consistent gets
     910851  physical reads
        160  redo size
   13143760  bytes sent via SQL*Net to client
      45184  bytes received via SQL*Net from client
       3536  SQL*Net roundtrips to/from client
         49  sorts (memory)
          0  sorts (disk)
      53019  rows processed


db版本是10gR2,cbo+all_rows,所以关联列都有索引,而且都分析过了,通过执行计划发现ANALYSIS_SAMPLES_T和STAGE_SUBMISSION_T都走得FTS,然后看到 optimizer_index_cost_adj=100,如果是oltp应该改小,但这是个dw系统,我试着改为30。


SQL> show parameter optimizer_index_cost_adj

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_cost_adj             integer     100



SQL> alter session set optimizer_index_cost_adj=30;

Session altered.


再次执行:

Elapsed: 00:07:18.59

Execution Plan
----------------------------------------------------------

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

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

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

|   0 | SELECT STATEMENT                     |                           |   114
K|   168M|       |   204K  (1)|

|   1 |  TABLE ACCESS BY INDEX ROWID         | STAGE_SUBMISSION_T        |     1
|   354 |       |     1   (0)|

|   2 |   NESTED LOOPS                       |                           |   114
K|   168M|       |   204K  (1)|

|   3 |    NESTED LOOPS OUTER                |                           |   114
K|   130M|       |   170K  (1)|

|   4 |     NESTED LOOPS OUTER               |                           |   114
K|    88M|       |   135K  (1)|

|   5 |      NESTED LOOPS OUTER              |                           |   114
K|    51M|       |   112K  (1)|

|   6 |       HASH JOIN OUTER                |                           |   114
K|    13M|    10M| 89904   (2)|

|   7 |        HASH JOIN OUTER               |                           |   114
K|  8955K|  7840K| 80737   (2)|

|   8 |         HASH JOIN OUTER              |                           |   114
K|  6492K|  5376K| 71702   (2)|

|   9 |          NESTED LOOPS                |                           |   114
K|  4029K|       |   142   (1)|

|  10 |           TABLE ACCESS BY INDEX ROWID| PARTITION_CTRL            |     1
|     6 |       |     1   (0)|

|  11 |            INDEX UNIQUE SCAN         | PARTITION_CTRL_PK         |     1
|       |       |     1   (0)|

|  12 |           INDEX FULL SCAN            | SYS_C004237               |   114
K|  3358K|       |   141   (1)|

|  13 |          VIEW                        |                           |  5076
K|   106M|       | 63043   (2)|

|  14 |           HASH GROUP BY              |                           |  5076
K|   174M|   539M| 63043   (2)|

|  15 |            INDEX RANGE SCAN          | SAMPLES_HIST_IDX01        |  6655
K|   228M|       |  9213   (1)|

|  16 |         VIEW                         |                           |  2722
K|    57M|       |  4226   (1)|

|  17 |          HASH GROUP BY               |                           |  2722
K|   147M|       |  4226   (1)|

|  18 |           INDEX RANGE SCAN           | SAMPLES_HIST_IDX01        |  3052
K|   165M|       |  4226   (1)|

|  19 |        VIEW                          |                           |   415
K|    17M|       |  7556   (1)|

|  20 |         HASH JOIN                    |                           |   415
K|    23M|    13M|  7556   (1)|

|  21 |          VIEW                        |                           |   415
K|  8934K|       |     1   (0)|

|  22 |           HASH GROUP BY              |                           |   415
K|    22M|       |     1   (0)|

|  23 |            INDEX RANGE SCAN          | SUBMISSION_HIST_IDX01     |   436
K|    23M|       |     1   (0)|

|  24 |          INDEX FULL SCAN             | SUBMISSION_HIST_IDX01     |  3005
K|   103M|       |     3   (0)|

|  25 |       TABLE ACCESS BY INDEX ROWID    | ANALYSIS_TASKS_T          |     1
|   349 |       |     1   (0)|

|  26 |        INDEX UNIQUE SCAN             | SYS_C004236               |     1
|       |       |     1   (0)|

|  27 |      TABLE ACCESS BY INDEX ROWID     | ANALYSIS_RESULTS_T        |     1
|   336 |       |     1   (0)|

|  28 |       INDEX UNIQUE SCAN              | ANALYSIS_RES_PK           |     1
|       |       |     1   (0)|

|  29 |     TABLE ACCESS BY INDEX ROWID      | ANALYSIS_SAMPLES_T        |     1
|   381 |       |     1   (0)|

|  30 |      INDEX RANGE SCAN                | ANALYSIS_SAMPLES_T_IDX_02 |     1
|       |       |     1   (0)|

|  31 |    INDEX RANGE SCAN                  | STAGE_SUBMISSION_T_IDX02  |     1
|       |       |     1   (0)|

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


Note
-----
   - 'PLAN_TABLE' is old version


Statistics
----------------------------------------------------------
       8693  recursive calls
         24  db block gets
     846164  consistent gets
     245556  physical reads
          0  redo size
   13570525  bytes sent via SQL*Net to client
      45184  bytes received via SQL*Net from client
       3536  SQL*Net roundtrips to/from client
        226  sorts (memory)
          0  sorts (disk)
      53019  rows processed


发现ANALYSIS_SAMPLES_T和STAGE_SUBMISSION_T都走索引了,consistent gets与physical reads都下降了。但是查询时间还是没有显著提高,是因为all-rows的原因么?大家有啥还办法不?能否通过改写上面的query sql达到优化的目的呢?
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
发表于 2010-7-8 20:31 | 显示全部楼层
全是外连接,还没啥限制条件

先把两个执行计划格式化一下
原始:
Execution Plan
----------------------------------------------------------

----------------------------
| Id  | Operation                           | Name                    | Rows  |Bytes |TempSpc| Cost (%CPU)|
------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |                         |   114K|  168M|       |   900K  (1)|
|   1 |  HASH JOIN RIGHT OUTER              |                         |   114K|  168M|       |   900K  (1)|
|   2 |   VIEW                              |                         |     1 |   44 |       |  6955   (2)|
|   3 |    FILTER                           |                         |       |      |       |            |
|   4 |     HASH GROUP BY                   |                         |     1 |  105 |       |  6955   (2)|
|   5 |      MERGE JOIN                     |                         |   722K|   72M|       |  6898   (1)|
|   6 |       TABLE ACCESS BY INDEX ROWID   | SUBMISSION_HIST_T       |  3005K|  137M|       |   827   (1)|
|   7 |        INDEX FULL SCAN              | SUBM_HIST_SUBM_INDX     |  3005K|      |       |    26   (0)|
|   8 |       SORT JOIN                     |                         |   436K|   23M|    60M|  6071   (1)|
|   9 |        INDEX RANGE SCAN             | SUBMISSION_HIST_IDX01   |   436K|   23M|       |     5   (0)|
|  10 |   NESTED LOOPS OUTER                |                         |   114K|  163M|       |   893K  (1)|
|  11 |    NESTED LOOPS OUTER               |                         |   114K|  127M|       |   664K  (1)|
|  12 |     HASH JOIN                       |                         |   114K|   89M|    51M|   434K  (1)|
|  13 |      HASH JOIN OUTER                |                         |   114K|   50M|    10M|   378K  (1)|
|  14 |       HASH JOIN OUTER               |                         |   114K| 8955K|  7840K|   150K  (1)|
|  15 |        HASH JOIN OUTER              |                         |   114K| 6492K|  5376K|   103K  (2)|
|  16 |         NESTED LOOPS                |                         |   114K| 4029K|       |   281   (2)|
|  17 |          TABLE ACCESS BY INDEX ROWID| PARTITION_CTRL          |     1 |    6 |       |     1   (0)|
|  18 |           INDEX UNIQUE SCAN         | PARTITION_CTRL_PK       |     1 |      |       |     0   (0)|
|  19 |          TABLE ACCESS FULL          | BO_ANALYSIS_WORK_KEYS_T |   114K| 3358K|       |   280   (2)|
|  20 |         VIEW                        |                         |  5076K|  106M|       | 95020   (2)|
|  21 |          HASH GROUP BY              |                         |  5076K|  174M|   539M| 95020   (2)|
|  22 |           INDEX FAST FULL SCAN      | SAMPLES_HIST_IDX01      |  6655K|  228M|       | 41190   (2)|
|  23 |        VIEW                         |                         |  2722K|   57M|       | 42260   (1)|
|  24 |         HASH GROUP BY               |                         |  2722K|  147M|   399M| 42260   (1)|
|  25 |          INDEX RANGE SCAN           | SAMPLES_HIST_IDX01      |  3052K|  165M|       | 42260   (1)|
|  26 |       TABLE ACCESS FULL             | ANALYSIS_SAMPLES_T      |  7244K| 2632M|       | 91833   (1)|
|  27 |      TABLE ACCESS FULL              | STAGE_SUBMISSION_T      |  1866K|  630M|       | 21785   (1)|
|  28 |     TABLE ACCESS BY INDEX ROWID     | ANALYSIS_TASKS_T        |     1 |  349 |       |     2   (0)|
|  29 |      INDEX UNIQUE SCAN              | SYS_C004236             |     1 |      |       |     1   (0)|
|  30 |    TABLE ACCESS BY INDEX ROWID      | ANALYSIS_RESULTS_T      |     1 |  336 |       |     2   (0)|
|  31 |     INDEX UNIQUE SCAN               | ANALYSIS_RES_PK         |     1 |      |       |     1   (0)|
------------------------------------------------------------------------------------------------------------


修改optimizer_index_cost_adj后:
Execution Plan
----------------------------------------------------------

---------------------------------------------------------------------------------------------------------------
| Id  | Operation                            | Name                      | Rows| Bytes |TempSpc| Cost (%CPU)|
---------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                     |                           |   114K|   168M|       |   204K  (1)|
|   1 |  TABLE ACCESS BY INDEX ROWID         | STAGE_SUBMISSION_T        |      1|   354 |       |     1   (0)|
|   2 |   NESTED LOOPS                       |                           |   114K|   168M|       |   204K  (1)|
|   3 |    NESTED LOOPS OUTER                |                           |   114K|   130M|       |   170K  (1)|
|   4 |     NESTED LOOPS OUTER               |                           |   114K|    88M|       |   135K  (1)|
|   5 |      NESTED LOOPS OUTER              |                           |   114K|    51M|       |   112K  (1)|
|   6 |       HASH JOIN OUTER                |                           |   114K|    13M|    10M| 89904   (2)|
|   7 |        HASH JOIN OUTER               |                           |   114K|  8955K|  7840K| 80737   (2)|
|   8 |         HASH JOIN OUTER              |                           |   114K|  6492K|  5376K| 71702   (2)|
|   9 |          NESTED LOOPS                |                           |   114K|  4029K|       |   142   (1)|
|  10 |           TABLE ACCESS BY INDEX ROWID| PARTITION_CTRL            |      1|     6 |       |     1   (0)|
|  11 |            INDEX UNIQUE SCAN         | PARTITION_CTRL_PK         |      1|       |       |     1   (0)|
|  12 |           INDEX FULL SCAN            | SYS_C004237               |   114K|  3358K|       |   141   (1)|
|  13 |          VIEW                        |                           |  5076K|   106M|       | 63043   (2)|
|  14 |           HASH GROUP BY              |                           |  5076K|   174M|   539M| 63043   (2)|
|  15 |            INDEX RANGE SCAN          | SAMPLES_HIST_IDX01        |  6655K|   228M|       |  9213   (1)|
|  16 |         VIEW                         |                           |  2722K|    57M|       |  4226   (1)|
|  17 |          HASH GROUP BY               |                           |  2722K|   147M|       |  4226   (1)|
|  18 |           INDEX RANGE SCAN           | SAMPLES_HIST_IDX01        |  3052K|   165M|       |  4226   (1)|
|  19 |        VIEW                          |                           |   415K|    17M|       |  7556   (1)|
|  20 |         HASH JOIN                    |                           |   415K|    23M|    13M|  7556   (1)|
|  21 |          VIEW                        |                           |   415K|  8934K|       |     1   (0)|
|  22 |           HASH GROUP BY              |                           |   415K|    22M|       |     1   (0)|
|  23 |            INDEX RANGE SCAN          | SUBMISSION_HIST_IDX01     |   436K|    23M|       |     1   (0)|
|  24 |          INDEX FULL SCAN             | SUBMISSION_HIST_IDX01     |  3005K|   103M|       |     3   (0)|
|  25 |       TABLE ACCESS BY INDEX ROWID    | ANALYSIS_TASKS_T          |      1|   349 |       |     1   (0)|
|  26 |        INDEX UNIQUE SCAN             | SYS_C004236               |      1|       |       |     1   (0)|
|  27 |      TABLE ACCESS BY INDEX ROWID     | ANALYSIS_RESULTS_T        |      1|   336 |       |     1   (0)|
|  28 |       INDEX UNIQUE SCAN              | ANALYSIS_RES_PK           |      1|       |       |     1   (0)|
|  29 |     TABLE ACCESS BY INDEX ROWID      | ANALYSIS_SAMPLES_T        |      1|   381 |       |     1   (0)|
|  30 |      INDEX RANGE SCAN                | ANALYSIS_SAMPLES_T_IDX_02 |      1|       |       |     1   (0)|
|  31 |    INDEX RANGE SCAN                  | STAGE_SUBMISSION_T_IDX02  |      1|       |       |     1   (0)|
---------------------------------------------------------------------------------------------------------------

使用道具 举报

回复
论坛徽章:
14
会员2007贡献徽章
日期:2007-09-26 18:42:10生肖徽章2007版:鸡
日期:2009-10-29 16:15:30生肖徽章2007版:兔
日期:2009-04-14 19:32:34生肖徽章2007版:猴
日期:2008-11-28 10:39:32奥运会纪念徽章:摔跤
日期:2008-08-12 10:59:32奥运会纪念徽章:艺术体操
日期:2008-08-07 09:43:42奥运会纪念徽章:举重
日期:2008-05-04 17:12:35生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53
 楼主| 发表于 2010-7-8 20:46 | 显示全部楼层
非常感谢ls兄弟的format!
第二个执行计划应该还可以,但是为啥效果不是很明显呢?

使用道具 举报

回复
论坛徽章:
136
ITPUB年度最佳技术回答奖
日期:2010-06-12 13:17:14现代
日期:2013-10-02 14:53:59路虎
日期:2013-11-22 12:26:182014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
发表于 2010-7-8 20:52 | 显示全部楼层
SELECT /*+ no_merge(asa_onl) no_merge(asa_app) no_merge(ssu_onl) leading(key,asa_onl,asa_app,ssu_onl) use_hash(asa_onl) use_hash(asa_app) use_hash(ssu_onl) */ pc.work_part AS partition_no,
          ssu.dagr_stu_cd ssu_dagr_stu_cd,
          ssu.subm_stu_nme ssu_subm_stu_nme,
          ssu.subm_usr_id ssu_subm_usr_id,
          ssu.subm_id ssu_subm_id,
          ssu.lot_lims_prod_id ssu_lot_lims_prod_id,
          ssu.samp_cre_init ssu_samp_cre_init,
          ssu.samp_rec_init ssu_samp_rec_init,
          ssu.stg_seq_no ssu_stg_seq_no,
          ssu.stg_nme ssu_stg_nme,
          ssu.subm_cre_init ssu_subm_cre_init,
          ssu.subm_cre_dt ssu_subm_cre_dt,
          ssu_onl.sta_hst_cre_init ssu_subm_onl_init,
          ssu_onl.sta_hst_cre_dt ssu_subm_onl_dt,
          ssu.subm_sts_cd ssu_subm_sts_cd,
          ssu.subm_cnd_cd ssu_subm_cnd_cd,
          ssu.samp_cre_dt ssu_samp_cre_dt,
          ssu.samp_rec_dt ssu_samp_rec_dt,
          ssu.stg_cre_dt ssu_stg_cre_dt,
          ssu.stg_cre_init ssu_stg_cre_init,
          ssu.stg_cyc_dd ssu_stg_cyc_dd,
          ssu.stg_du_dt ssu_stg_du_dt,
          ssu.stg_pl_cd ssu_stg_pl_cd,
          ssu.stg_req_id ssu_stg_req_id,
          ssu.stg_slot_flag ssu_stg_slot_flag,
          ssu.stg_slot_no ssu_stg_slot_no,
          ssu.subm_orgn_txt ssu_subm_orgn_txt,
          ssu.subm_prnt_id ssu_subm_prnt_id,
          ssu.char_txt_y_n ssu_char_txt_y_n,
          ssu.bin_fil_txt_y_n ssu_bin_fil_txt_y_n,
          ssu.bin_obj_txt_y_n ssu_bin_obj_txt_y_n,
          ssu.stu_id ssu_stu_id,
          ssu.stu_ver ssu_stu_ver,
          ssu.stu_gen ssu_stu_gen,
          asa.dagr_mat_cd asa_dagr_mat_cd,
          asa.samp_id asa_samp_id,
          asa.slot_nme_val asa_slot_nme_val,
          asa.samp_src_nme asa_samp_src_nme,
          asa.samp_cre_dt asa_samp_cre_dt,
          asa.samp_cre_init asa_samp_cre_init,
          asa_onl.sta_hst_cre_dt asa_samp_onl_dt,
          NVL (asa_onl.sta_hst_cre_dt, asa.samp_cre_dt) asa_samp_recv_dt,
          asa_app.sta_hst_cre_dt asa_samp_app_dt,
          asa.samp_sts_cd asa_samp_sts_cd,
          asa.samp_cnd_cd asa_samp_cnd_cd,
          asa.samp_anly_init asa_samp_anly_init,
          asa.samp_cnd_lvl asa_samp_cnd_lvl,
          asa.samp_dt asa_samp_dt,
          asa.samp_prnt_id asa_samp_prnt_id,
          asa.samp_req_init asa_samp_req_init,
          asa.samp_res_nme asa_samp_res_nme,
          asa.samp_res_tp asa_samp_res_tp,
          asa.samp_subm_init asa_samp_subm_init,
          asa.samp_supv_init asa_samp_supv_init,
          asa.samp_tp asa_samp_tp,
          asa.samp_usr_id asa_samp_usr_id,
          asa.char_txt_y_n asa_char_txt_y_n,
          asa.bin_fil_txt_y_n asa_bin_fil_txt_y_n,
          asa.bin_obj_txt_y_n asa_bin_obj_txt_y_n,
          asa.mat_id asa_mat_id,
          asa.mat_ver asa_mat_ver,
          asa.mat_gen asa_mat_gen,
          asa.samp_pl_id asa_samp_pl_id,
          asa.samp_pl_ver asa_samp_pl_ver,
          asa.samp_pl_gen asa_samp_pl_gen,
          ata.task_met_nme ata_task_met_nme,
          ata.dagr_met_cd ata_dagr_met_cd,
          ata.task_id ata_task_id,
          ata.spec_nme_id ata_spec_nme_id,
          ata.spec_nme_ver ata_spec_nme_ver,
          ata.wlst_id ata_wlst_id,
          ata.wlst_nme ata_wlst_nme,
          ata.wlst_sts ata_wlst_sts,
          ata.wlst_cnd ata_wlst_cnd,
          ata.task_cre_dt ata_task_cre_dt,
          ata.task_cre_init ata_task_cre_init,
          ata.task_sts_cd ata_task_sts_cd,
          ata.task_cnd_cd ata_task_cnd_cd,
          ata.inst_cls_nme ata_inst_cls_nme,
          ata.inst_nme ata_inst_nme,
          ata.oper_nme ata_oper_nme,
          ata.res_unex_cd ata_res_unex_cd,
          ata.task_anly_init ata_task_anly_init,
          ata.task_cnd_lvl ata_task_cnd_lvl,
          ata.task_do_dt ata_task_do_dt,
          ata.task_du_dt ata_task_du_dt,
          ata.task_prnt_id ata_task_prnt_id,
          ata.task_seq_no ata_task_seq_no,
          ata.wlst_seq_no ata_wlst_seq_no,
          ata.char_txt_y_n ata_char_txt_y_n,
          ata.bin_fil_txt_y_n ata_bin_fil_txt_y_n,
          ata.bin_obj_txt_y_n ata_bin_obj_txt_y_n,
          ata.oper_id ata_oper_id,
          ata.oper_ver ata_oper_ver,
          ata.oper_gen ata_oper_gen,
          ata.met_id ata_met_id,
          ata.met_ver ata_met_ver,
          ata.met_gen ata_met_gen,
          ata.inst_id ata_inst_id,
          ata.inst_ver ata_inst_ver,
          ata.inst_gen ata_inst_gen,
          ata.spec_nme_gen ata_spec_nme_gen,
          are.rslt_id are_rslt_id,
          are.rslt_ver are_rslt_ver,
          are.rslt_chg_nme are_rslt_chg_nme,
          are.tspec_id are_tspec_id,
          are.tspec_ver are_tspec_ver,
          are.rslt_cnd_lvl are_rslt_cnd_lvl,
          are.rslt_sts_cd are_rslt_sts_cd,
          are.rslt_cnd_cd are_rslt_cnd_cd,
          are.rslt_cmp_nme are_rslt_cmp_nme,
          are.rslt_no_val are_rslt_no_val,
          are.rslt_txt_val are_rslt_txt_val,
          analysis_results_p.convert_txt_rslt_to_no_rslt (are.rslt_val_tp,
                                                          are.rslt_txt_val
          )
             are_rslt_txtno_val,
          are.rslt_mu are_rslt_mu,
          are.rslt_ent_dt are_rslt_ent_dt,
          are.rslt_ent_init are_rslt_ent_init,
          are.task_rep_no are_task_rep_no,
          are.task_ver are_task_ver,
          are.rslt_in_lim are_rslt_in_lim,
          are.rslt_in_spec are_rslt_in_spec,
          are.rslt_pl_cd are_rslt_pl_cd,
          are.rslt_req_cd are_rslt_req_cd,
          are.rslt_orgn_cd are_rslt_orgn_cd,
          are.rslt_unit are_rslt_unit,
          are.rslt_tm_val_dt are_rslt_tm_val_dt,
          are.rslt_val_tp are_rslt_val_tp,
          are.rslt_cre_dt are_rslt_cre_dt,
          are.rslt_cre_init are_rslt_cre_init,
          are.rslt_rep_y_n are_rslt_rep_y_n,
          are.char_txt_y_n are_char_txt_y_n,
          are.bin_fil_txt_y_n are_bin_fil_txt_y_n,
          are.bin_obj_txt_y_n are_bin_obj_txt_y_n,
          are.mu_id are_mu_id,
          are.mu_ver are_mu_ver,
          NVL (ssu.subm_id, -999) ssu_subm_id_key,
          NVL (asa.samp_id, -999) asa_samp_id_key,
          NVL (ata.task_id, -999) ata_task_id_key,
          NVL (are.rslt_id, -999) are_rslt_id_key,
          NVL (are.rslt_ver, -999) are_rslt_ver_key
   FROM qdwload.partition_ctrl pc,
        gdw.bo_analysis_work_keys_t key,
        gdw.stage_submission_t ssu,
        gdw.analysis_samples_t asa,
        gdw.analysis_tasks_t ata,
        gdw.analysis_results_t are,
        (SELECT samp_id, MIN (sta_hst_cre_dt) sta_hst_cre_dt
         FROM gdw.samples_hist_t
         WHERE sta_id_ini_nme = 'INCOMPLETE' AND sta_id_fn_nme = 'ONLINE'
         GROUP BY samp_id) asa_onl,
        (SELECT samp_id, MAX (sta_hst_cre_dt) sta_hst_cre_dt
         FROM gdw.samples_hist_t
         WHERE sta_id_fn_nme = 'APPROVED'
         GROUP BY samp_id) asa_app,
        (SELECT /*+ no_merge(mini) */ hist.subm_id, hist.sta_hst_cre_init, hist.sta_hst_cre_dt
         FROM gdw.submission_hist_t hist,
              (SELECT subm_id, MIN (sta_hst_cre_dt) sta_hst_cre_dt
               FROM gdw.submission_hist_t
               WHERE sta_id_ini_nme = 'INCOMPLETE' AND sta_id_fn_nme = 'ONLINE'
               GROUP BY subm_id) mini
         WHERE mini.subm_id = hist.subm_id
               AND mini.sta_hst_cre_dt = hist.sta_hst_cre_dt) ssu_onl
   WHERE     pc.id = 1
         AND key.ssu_subm_id = ssu.subm_id
         AND key.asa_samp_id = asa.samp_id(+)
         AND key.ata_task_id = ata.task_id(+)
         AND key.are_rslt_id = are.rslt_id(+)
         AND key.are_rslt_ver = are.rslt_ver(+)
         AND key.asa_samp_id = asa_onl.samp_id(+)
         AND key.asa_samp_id = asa_app.samp_id(+)
         AND key.ssu_subm_id = ssu_onl.subm_id(+);

试试这个

使用道具 举报

回复
论坛徽章:
136
ITPUB年度最佳技术回答奖
日期:2010-06-12 13:17:14现代
日期:2013-10-02 14:53:59路虎
日期:2013-11-22 12:26:182014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
发表于 2010-7-8 20:55 | 显示全部楼层
这样的物理读时间差不多这个数,而且很多已经从文件系统缓存里读取的了


430s/245556  单块读的平均时间也就2ms,说明大部分物理读来自文件系统缓存

使用道具 举报

回复
论坛徽章:
14
会员2007贡献徽章
日期:2007-09-26 18:42:10生肖徽章2007版:鸡
日期:2009-10-29 16:15:30生肖徽章2007版:兔
日期:2009-04-14 19:32:34生肖徽章2007版:猴
日期:2008-11-28 10:39:32奥运会纪念徽章:摔跤
日期:2008-08-12 10:59:32奥运会纪念徽章:艺术体操
日期:2008-08-07 09:43:42奥运会纪念徽章:举重
日期:2008-05-04 17:12:35生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53
 楼主| 发表于 2010-7-8 21:04 | 显示全部楼层
谢谢棉花糖,明天我上班就把你贴的sql执行一遍看看~

使用道具 举报

回复
认证徽章
论坛徽章:
21
奔驰
日期:2013-08-06 15:23:05日产
日期:2013-08-07 22:56:38蜘蛛蛋
日期:2012-12-29 19:15:08奥迪
日期:2013-08-07 17:02:24数据库板块每日发贴之星
日期:2010-06-28 01:01:03奥迪
日期:2013-08-13 10:10:28本田
日期:2013-11-20 15:17:02优秀写手
日期:2013-12-18 09:29:08玉兔
日期:2014-03-04 16:47:17铁扇公主
日期:2012-02-21 15:02:40
发表于 2010-7-8 22:16 | 显示全部楼层
第一次见这样的执行计划,没有过滤条件。单行的返回结果集还都很高,水平有限,还需学习。

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
发表于 2010-7-9 08:24 | 显示全部楼层
select count(1)
  from gdw.bo_analysis_work_keys_t key, gdw.stage_submission_t ssu
where key.ssu_subm_id = ssu.subm_id

这个结果是多少?

使用道具 举报

回复
论坛徽章:
14
会员2007贡献徽章
日期:2007-09-26 18:42:10生肖徽章2007版:鸡
日期:2009-10-29 16:15:30生肖徽章2007版:兔
日期:2009-04-14 19:32:34生肖徽章2007版:猴
日期:2008-11-28 10:39:32奥运会纪念徽章:摔跤
日期:2008-08-12 10:59:32奥运会纪念徽章:艺术体操
日期:2008-08-07 09:43:42奥运会纪念徽章:举重
日期:2008-05-04 17:12:35生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53
 楼主| 发表于 2010-7-9 09:45 | 显示全部楼层
原帖由 sundog315 于 2010-7-9 08:24 发表
select count(1)
  from gdw.bo_analysis_work_keys_t key, gdw.stage_submission_t ssu
where key.ssu_subm_id = ssu.subm_id

这个结果是多少?


62455

使用道具 举报

回复
论坛徽章:
14
会员2007贡献徽章
日期:2007-09-26 18:42:10生肖徽章2007版:鸡
日期:2009-10-29 16:15:30生肖徽章2007版:兔
日期:2009-04-14 19:32:34生肖徽章2007版:猴
日期:2008-11-28 10:39:32奥运会纪念徽章:摔跤
日期:2008-08-12 10:59:32奥运会纪念徽章:艺术体操
日期:2008-08-07 09:43:42奥运会纪念徽章:举重
日期:2008-05-04 17:12:35生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53
 楼主| 发表于 2010-7-9 10:47 | 显示全部楼层
原帖由 棉花糖ONE 于 2010-7-8 20:52 发表
SELECT /*+ no_merge(asa_onl) no_merge(asa_app) no_merge(ssu_onl) leading(key,asa_onl,asa_app,ssu_onl) use_hash(asa_onl) use_hash(asa_app) use_hash(ssu_onl) */ pc.work_part AS partition_no,
          ssu.dagr_stu_cd ssu_dagr_stu_cd,
          ssu.subm_stu_nme ssu_subm_stu_nme,
          ssu.subm_usr_id ssu_subm_usr_id,
          ssu.subm_id ssu_subm_id,
          ssu.lot_lims_prod_id ssu_lot_lims_prod_id,
          ssu.samp_cre_init ssu_samp_cre_init,
          ssu.samp_rec_init ssu_samp_rec_init,
          ssu.stg_seq_no ssu_stg_seq_no,
          ssu.stg_nme ssu_stg_nme,
          ssu.subm_cre_init ssu_subm_cre_init,
          ssu.subm_cre_dt ssu_subm_cre_dt,
          ssu_onl.sta_hst_cre_init ssu_subm_onl_init,
          ssu_onl.sta_hst_cre_dt ssu_subm_onl_dt,
          ssu.subm_sts_cd ssu_subm_sts_cd,
          ssu.subm_cnd_cd ssu_subm_cnd_cd,
          ssu.samp_cre_dt ssu_samp_cre_dt,
          ssu.samp_rec_dt ssu_samp_rec_dt,
          ssu.stg_cre_dt ssu_stg_cre_dt,
          ssu.stg_cre_init ssu_stg_cre_init,
          ssu.stg_cyc_dd ssu_stg_cyc_dd,
          ssu.stg_du_dt ssu_stg_du_dt,
          ssu.stg_pl_cd ssu_stg_pl_cd,
          ssu.stg_req_id ssu_stg_req_id,
          ssu.stg_slot_flag ssu_stg_slot_flag,
          ssu.stg_slot_no ssu_stg_slot_no,
          ssu.subm_orgn_txt ssu_subm_orgn_txt,
          ssu.subm_prnt_id ssu_subm_prnt_id,
          ssu.char_txt_y_n ssu_char_txt_y_n,
          ssu.bin_fil_txt_y_n ssu_bin_fil_txt_y_n,
          ssu.bin_obj_txt_y_n ssu_bin_obj_txt_y_n,
          ssu.stu_id ssu_stu_id,
          ssu.stu_ver ssu_stu_ver,
          ssu.stu_gen ssu_stu_gen,
          asa.dagr_mat_cd asa_dagr_mat_cd,
          asa.samp_id asa_samp_id,
          asa.slot_nme_val asa_slot_nme_val,
          asa.samp_src_nme asa_samp_src_nme,
          asa.samp_cre_dt asa_samp_cre_dt,
          asa.samp_cre_init asa_samp_cre_init,
          asa_onl.sta_hst_cre_dt asa_samp_onl_dt,
          NVL (asa_onl.sta_hst_cre_dt, asa.samp_cre_dt) asa_samp_recv_dt,
          asa_app.sta_hst_cre_dt asa_samp_app_dt,
          asa.samp_sts_cd asa_samp_sts_cd,
          asa.samp_cnd_cd asa_samp_cnd_cd,
          asa.samp_anly_init asa_samp_anly_init,
          asa.samp_cnd_lvl asa_samp_cnd_lvl,
          asa.samp_dt asa_samp_dt,
          asa.samp_prnt_id asa_samp_prnt_id,
          asa.samp_req_init asa_samp_req_init,
          asa.samp_res_nme asa_samp_res_nme,
          asa.samp_res_tp asa_samp_res_tp,
          asa.samp_subm_init asa_samp_subm_init,
          asa.samp_supv_init asa_samp_supv_init,
          asa.samp_tp asa_samp_tp,
          asa.samp_usr_id asa_samp_usr_id,
          asa.char_txt_y_n asa_char_txt_y_n,
          asa.bin_fil_txt_y_n asa_bin_fil_txt_y_n,
          asa.bin_obj_txt_y_n asa_bin_obj_txt_y_n,
          asa.mat_id asa_mat_id,
          asa.mat_ver asa_mat_ver,
          asa.mat_gen asa_mat_gen,
          asa.samp_pl_id asa_samp_pl_id,
          asa.samp_pl_ver asa_samp_pl_ver,
          asa.samp_pl_gen asa_samp_pl_gen,
          ata.task_met_nme ata_task_met_nme,
          ata.dagr_met_cd ata_dagr_met_cd,
          ata.task_id ata_task_id,
          ata.spec_nme_id ata_spec_nme_id,
          ata.spec_nme_ver ata_spec_nme_ver,
          ata.wlst_id ata_wlst_id,
          ata.wlst_nme ata_wlst_nme,
          ata.wlst_sts ata_wlst_sts,
          ata.wlst_cnd ata_wlst_cnd,
          ata.task_cre_dt ata_task_cre_dt,
          ata.task_cre_init ata_task_cre_init,
          ata.task_sts_cd ata_task_sts_cd,
          ata.task_cnd_cd ata_task_cnd_cd,
          ata.inst_cls_nme ata_inst_cls_nme,
          ata.inst_nme ata_inst_nme,
          ata.oper_nme ata_oper_nme,
          ata.res_unex_cd ata_res_unex_cd,
          ata.task_anly_init ata_task_anly_init,
          ata.task_cnd_lvl ata_task_cnd_lvl,
          ata.task_do_dt ata_task_do_dt,
          ata.task_du_dt ata_task_du_dt,
          ata.task_prnt_id ata_task_prnt_id,
          ata.task_seq_no ata_task_seq_no,
          ata.wlst_seq_no ata_wlst_seq_no,
          ata.char_txt_y_n ata_char_txt_y_n,
          ata.bin_fil_txt_y_n ata_bin_fil_txt_y_n,
          ata.bin_obj_txt_y_n ata_bin_obj_txt_y_n,
          ata.oper_id ata_oper_id,
          ata.oper_ver ata_oper_ver,
          ata.oper_gen ata_oper_gen,
          ata.met_id ata_met_id,
          ata.met_ver ata_met_ver,
          ata.met_gen ata_met_gen,
          ata.inst_id ata_inst_id,
          ata.inst_ver ata_inst_ver,
          ata.inst_gen ata_inst_gen,
          ata.spec_nme_gen ata_spec_nme_gen,
          are.rslt_id are_rslt_id,
          are.rslt_ver are_rslt_ver,
          are.rslt_chg_nme are_rslt_chg_nme,
          are.tspec_id are_tspec_id,
          are.tspec_ver are_tspec_ver,
          are.rslt_cnd_lvl are_rslt_cnd_lvl,
          are.rslt_sts_cd are_rslt_sts_cd,
          are.rslt_cnd_cd are_rslt_cnd_cd,
          are.rslt_cmp_nme are_rslt_cmp_nme,
          are.rslt_no_val are_rslt_no_val,
          are.rslt_txt_val are_rslt_txt_val,
          analysis_results_p.convert_txt_rslt_to_no_rslt (are.rslt_val_tp,
                                                          are.rslt_txt_val
          )
             are_rslt_txtno_val,
          are.rslt_mu are_rslt_mu,
          are.rslt_ent_dt are_rslt_ent_dt,
          are.rslt_ent_init are_rslt_ent_init,
          are.task_rep_no are_task_rep_no,
          are.task_ver are_task_ver,
          are.rslt_in_lim are_rslt_in_lim,
          are.rslt_in_spec are_rslt_in_spec,
          are.rslt_pl_cd are_rslt_pl_cd,
          are.rslt_req_cd are_rslt_req_cd,
          are.rslt_orgn_cd are_rslt_orgn_cd,
          are.rslt_unit are_rslt_unit,
          are.rslt_tm_val_dt are_rslt_tm_val_dt,
          are.rslt_val_tp are_rslt_val_tp,
          are.rslt_cre_dt are_rslt_cre_dt,
          are.rslt_cre_init are_rslt_cre_init,
          are.rslt_rep_y_n are_rslt_rep_y_n,
          are.char_txt_y_n are_char_txt_y_n,
          are.bin_fil_txt_y_n are_bin_fil_txt_y_n,
          are.bin_obj_txt_y_n are_bin_obj_txt_y_n,
          are.mu_id are_mu_id,
          are.mu_ver are_mu_ver,
          NVL (ssu.subm_id, -999) ssu_subm_id_key,
          NVL (asa.samp_id, -999) asa_samp_id_key,
          NVL (ata.task_id, -999) ata_task_id_key,
          NVL (are.rslt_id, -999) are_rslt_id_key,
          NVL (are.rslt_ver, -999) are_rslt_ver_key
   FROM qdwload.partition_ctrl pc,
        gdw.bo_analysis_work_keys_t key,
        gdw.stage_submission_t ssu,
        gdw.analysis_samples_t asa,
        gdw.analysis_tasks_t ata,
        gdw.analysis_results_t are,
        (SELECT samp_id, MIN (sta_hst_cre_dt) sta_hst_cre_dt
         FROM gdw.samples_hist_t
         WHERE sta_id_ini_nme = 'INCOMPLETE' AND sta_id_fn_nme = 'ONLINE'
         GROUP BY samp_id) asa_onl,
        (SELECT samp_id, MAX (sta_hst_cre_dt) sta_hst_cre_dt
         FROM gdw.samples_hist_t
         WHERE sta_id_fn_nme = 'APPROVED'
         GROUP BY samp_id) asa_app,
        (SELECT /*+ no_merge(mini) */ hist.subm_id, hist.sta_hst_cre_init, hist.sta_hst_cre_dt
         FROM gdw.submission_hist_t hist,
              (SELECT subm_id, MIN (sta_hst_cre_dt) sta_hst_cre_dt
               FROM gdw.submission_hist_t
               WHERE sta_id_ini_nme = 'INCOMPLETE' AND sta_id_fn_nme = 'ONLINE'
               GROUP BY subm_id) mini
         WHERE mini.subm_id = hist.subm_id
               AND mini.sta_hst_cre_dt = hist.sta_hst_cre_dt) ssu_onl
   WHERE     pc.id = 1
         AND key.ssu_subm_id = ssu.subm_id
         AND key.asa_samp_id = asa.samp_id(+)
         AND key.ata_task_id = ata.task_id(+)
         AND key.are_rslt_id = are.rslt_id(+)
         AND key.are_rslt_ver = are.rslt_ver(+)
         AND key.asa_samp_id = asa_onl.samp_id(+)
         AND key.asa_samp_id = asa_app.samp_id(+)
         AND key.ssu_subm_id = ssu_onl.subm_id(+);

试试这个




的确快了些,这是执行计划

Elapsed: 00:05:39.34

Execution Plan
----------------------------------------------------------

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

| Id  | Operation                       | Name                    | Rows  | Byte
s |TempSpc| Cost (%CPU)|

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

|   0 | SELECT STATEMENT                |                         |   114K|   16
8M|       |  1017K  (1)|

|   1 |  NESTED LOOPS OUTER             |                         |   114K|   16
8M|       |  1017K  (1)|

|   2 |   NESTED LOOPS OUTER            |                         |   114K|   13
2M|       |   788K  (1)|

|   3 |    MERGE JOIN CARTESIAN         |                         |   114K|    9
3M|       |   558K  (1)|

|   4 |     HASH JOIN OUTER             |                         |   114K|    9
3M|    52M|   444K  (1)|

|   5 |      HASH JOIN                  |                         |   114K|    5
1M|    14M|   214K  (1)|

|   6 |       HASH JOIN OUTER           |                         |   114K|    1
2M|  9632K|   159K  (1)|

|   7 |        HASH JOIN OUTER          |                         |   114K|  828
3K|  7168K|   150K  (1)|

|   8 |         HASH JOIN OUTER         |                         |   114K|  582
0K|  4704K| 47197   (1)|

|   9 |          TABLE ACCESS FULL      | BO_ANALYSIS_WORK_KEYS_T |   114K|  335
8K|       |   280   (2)|

|  10 |          VIEW                   |                         |  2722K|    5
7M|       | 42260   (1)|

|  11 |           HASH GROUP BY         |                         |  2722K|   14
7M|   399M| 42260   (1)|

|  12 |            INDEX RANGE SCAN     | SAMPLES_HIST_IDX01      |  3052K|   16
5M|       | 42260   (1)|

|  13 |         VIEW                    |                         |  5076K|   10
6M|       | 95020   (2)|

|  14 |          HASH GROUP BY          |                         |  5076K|   17
4M|   539M| 95020   (2)|

|  15 |           INDEX FAST FULL SCAN  | SAMPLES_HIST_IDX01      |  6655K|   22
8M|       | 41190   (2)|

|  16 |        VIEW                     |                         |   415K|    1
7M|       |  7565   (1)|

|  17 |         HASH JOIN               |                         |   415K|    2
3M|    13M|  7565   (1)|

|  18 |          VIEW                   |                         |   415K|  893
4K|       |     5   (0)|

|  19 |           HASH GROUP BY         |                         |   415K|    2
2M|       |     5   (0)|

|  20 |            INDEX RANGE SCAN     | SUBMISSION_HIST_IDX01   |   436K|    2
3M|       |     5   (0)|

|  21 |          INDEX FAST FULL SCAN   | SUBMISSION_HIST_IDX01   |  3005K|   10
3M|       |     7   (0)|

|  22 |       TABLE ACCESS FULL         | STAGE_SUBMISSION_T      |  1866K|   63
0M|       | 21785   (1)|

|  23 |      TABLE ACCESS FULL          | ANALYSIS_SAMPLES_T      |  7244K|  263
2M|       | 91833   (1)|

|  24 |     BUFFER SORT                 |                         |     1 |
6 |       |   466K  (1)|

|  25 |      TABLE ACCESS BY INDEX ROWID| PARTITION_CTRL          |     1 |
6 |       |     1   (0)|

|  26 |       INDEX UNIQUE SCAN         | PARTITION_CTRL_PK       |     1 |
  |       |     0   (0)|

|  27 |    TABLE ACCESS BY INDEX ROWID  | ANALYSIS_TASKS_T        |     1 |   34
9 |       |     2   (0)|

|  28 |     INDEX UNIQUE SCAN           | SYS_C004236             |     1 |
  |       |     1   (0)|

|  29 |   TABLE ACCESS BY INDEX ROWID   | ANALYSIS_RESULTS_T      |     1 |   33
6 |       |     2   (0)|

|  30 |    INDEX UNIQUE SCAN            | ANALYSIS_RES_PK         |     1 |
  |       |     1   (0)|

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


Note
-----
   - 'PLAN_TABLE' is old version


Statistics
----------------------------------------------------------
       4466  recursive calls
          0  db block gets
    1236720  consistent gets
     875307  physical reads
          0  redo size
   15574669  bytes sent via SQL*Net to client
      52338  bytes received via SQL*Net from client
       4165  SQL*Net roundtrips to/from client
        119  sorts (memory)
          0  sorts (disk)
      62455  rows processed

使用道具 举报

回复

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

本版积分规则 发表回复

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