加入distinct 和不加入執行時間相差幾千倍

tolywang發表於2010-02-27
SELECT DISTINCT a.batch_no,
                TO_CHAR ((a.sap_release_date - 1 / 24),
                         'mm/dd/yy hh24:mi:ss'
                        ) AS sap_release_date
           FROM (SELECT   batch_no, MAX (wo.sap_release_date)
                                                             sap_release_date,
                          MAX (wo.create_date) AS sfc_donwload_time
                     FROM dfms.wip_d_wo_master wo
                    WHERE wo.sfg_type = 'SYSTEM'
                      AND wo.sap_release_date >=
                                              TO_DATE ('20100226', 'yyyymmdd')
                      AND wo.sap_release_date <
                                           TO_DATE ('20100226', 'yyyymmdd')
                                           + 1
                      AND wo.plant_code IN ('MI02', 'MI03', 'MI04')
                 GROUP BY wo.batch_no) a,
                dfms.wip_d_wo_master b
          WHERE a.batch_no = b.batch_no
            AND a.sap_release_date = b.sap_release_date
            AND b.sfg_type = 'SYSTEM'
            AND b.sap_release_date >= TO_DATE ('20100226', 'yyyymmdd')
            AND b.sap_release_date < TO_DATE ('20100226', 'yyyymmdd') + 1
            AND b.plant_code IN ('MI02', 'MI03', 'MI04')



wip_d_wo_master   是一個 600 多萬的大表,  batch_no , sap_release_date  建立有 index , 包含有 DISTINCT
執行很慢 (Toad中執行),  但是在Web Page中執行卻很快 ,不包含 DISTINCT 在Toad中執行也很快, Cost都差不多 。

下圖中 IDX9_XXXXXXX  是欄位  SAP_RELEASE_DATE  的索引 。

下圖1 是有 DISTINCT 的執行計劃 , 執行需要 1分鐘 40 秒 。
下圖2 是 沒有 DISTINCT 的執行計劃,  執行需要不到1秒 。

[ 本帖最後由 tolywang 於 2010-2-27 12:04 編輯 ]
加入distinct 和不加入執行時間相差幾千倍
cost.jpg

加入distinct 和不加入執行時間相差幾千倍
cost2.jpg

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-628030/,如需轉載,請註明出處,否則將追究法律責任。

相關文章