优化查询运行时间太长

0 sql oracle optimization plsql

我使用toad for Oracle来运行一个运行时间太长的查询,有时超过15分钟.

该查询正在提取备忘录,这些备忘录将由经理批准.查询没有带回很多行.通常,当它运行时,它将返回大约30或40行.查询需要访问几个表以获取其信息,因此我使用了很多连接来获取此信息.

我在下面附上了我的查询.如果有人可以帮助优化这个查询,我会非常非常好.

查询:

SELECT (e.error_Description || DECODE(t.trans_Comment, 'N', '', '','', ' - ' || t.trans_Comment)) AS Title,
       t.Date_Time_Recorded AS Date_Recorded,
       DECODE(t.user_ID,0,'System',(SELECT Full_Name FROM employee WHERE t.user_Id = user_id)) AS Recorded_by,
           DECODE(t.user_ID,0, Dm_General.getCalendarShiftName(t.Date_Time_Recorded), (SELECT shift FROM employee WHERE t.user_Id = user_id)) AS Shift,
          l.Lot_Number AS entity_number,
          ms.Line_Num,
          'L' AS Entity_Type, 
           t.entity_id, l.lot_Id AS Lot_Id
      FROM DAT_TRANSACTION t
      JOIN ADM_ERRORCODES e ON e.error_id = t.error_id
      JOIN ADM_ACTIONS a ON a.action_id = t.action_id,
           DAT_LOT l
                 INNER JOIN Status s ON l.Lot_Status_ID = s.Status_ID,
          DAT_MASTER ms
                INNER JOIN ADM_LINE LN ON ms.Line_Num = LN.Line_Num
      WHERE
             (e.memo_req = 'Y' OR a.memo_req = 'Y')
          AND ms.Run_type_Id = Constants.Runtype_Production_Run --Production Run type
           AND s.completed_type NOT IN ('D', 'C', 'R') -- Destroyed /closed / Released
          AND LN.GEN = '2GT'
           AND (NOT EXISTS (SELECT 1 FROM LNK_MEMO_TRANS lnk, DAT_MEMO m
                           WHERE lnk.Trans_ID = t.trans_id AND lnk.Memo_ID = m.Memo_ID
                           AND NVL(m.approve, 'Y') = 'Y'))--If it's null, it's 
                                                  been created and is awaiting approval
          AND l.Master_ID = ms.Master_ID
           AND t.Entity_ID = l.Lot_ID
           AND t.Entity_Type IN ('L', 'G');
Run Code Online (Sandbox Code Playgroud)

Aar*_*lla 5

查询性能不佳的常见原因是Oracle无法找到合适的索引.EXPLAIN PLAN与TOAD一起使用,以便Oracle可以告诉您它认为执行查询的最佳方式.这应该会让你知道何时使用索引,何时不使用索引.

有关一般指示,请参阅http://www.orafaq.com/wiki/Oracle_database_Performance_Tuning_FAQ

请参阅此处了解EXPLAIN PLAN.