SQL語句優化解决思路

SQL語句優化
select d.work_order, d.side, d.machine_name, d.reel_no, d.create_time
  from ate.xx_faliao_travel d
  left join smt.g_wo_msl e on d.work_order = e.work_order
                          and d.machine_name = e.machine_name
                          and decode(d.side, 'TOP', 0, 1) = e.side
 where (e.status = 'SMTLOADING' OR e.status = 'CREATE')
   and not exists
 (select reel_no
          from (select *
                  from smt.g_smt_travel
                union all
                select * from smt.g_smt_status) a
          left join smt.g_wo_msl b on a.wo_sequence = b.wo_sequence
         where (b.status = 'SMTLOADING' or b.status = 'CREATE')
           and d.reel_no = a.reel_no)
   and d.create_time < sysdate - 1 / 144
   and d.status = 2


這條SQL語句需要80S來執行
如果把d.status = 2這個條件拿掉只需要2S


數據量
smt.g_smt_status <ate.xx_faliao_travel <smt.g_wo_msl <smt.g_smt_travel


索引都已經加好了
請問還有那邊優化沒有做好的
------解决思路----------------------
1)d.status 没有索引?
2)将1个 not exists 拆成两个,union all 的结果又没有索引。还有不要 SELECT *,reel_no 就够了吧。
------解决思路----------------------
SELECT  d.work_order
       ,d.side
       ,d.machine_name
       ,d.reel_no
       ,d.create_time
FROM    ate.xx_faliao_travel d
        LEFT JOIN smt.g_wo_msl e ON d.work_order = e.work_order
                                    AND d.machine_name = e.machine_name
                                    AND decode(d.side, 'TOP', 0, 1) = e.side
WHERE   ( e.status = 'SMTLOADING'   OR e.status = 'CREATE'        ) 
AND (  NOT EXISTS (SELECT  1 FROM    smt.g_smt_travel WHERE wo_sequence=e.wo_sequence)
OR NOT EXISTS (SELECT  1 FROM    smt.g_smt_status WHERE wo_sequence=e.wo_sequence) )    
        AND d.create_time < sysdate - 1 / 144
        AND d.status = 2


------解决思路----------------------
加不加条件的运行时间没说反吗?
#3的倒数第二行cardinality比#2高2个数量级。
------解决思路----------------------
2楼和3楼的的执行计划看起来是一样的,那么,不加status条件时的0.5S,只是PL/SQL DEV中只显示第一页时的执行时间吧,把所有都显示恐怕不止要20秒

------解决思路----------------------
#2里面第二行是一个 FILTER,估计 d.status = 2 是取记录合并后再过滤的,没有用到索引。
FALIAO_TRAVEL_INDEX 里面加上 status 试试。
------解决思路----------------------
试试在smt.g_smt_travel表上创建索引(reel_no,wo_sequence)