Oracle11g 优化Oracle查询

Oracle11g 优化Oracle查询,oracle11g,Oracle11g,我创建了一个查询,通常需要7到11秒才能返回一个集合,我想让它更快。我知道我必须使用if索引来实现这一点,所以我已经正确地使用了它们。不幸的是,它将给出相同的执行时间:以下是我使用的查询: WITH trackin8080 AS ( SELECT DISTINCT c.containerid , c.containername , hml.historyid , hml.wiptrackinggroupkeyid , hml.qty , hml

我创建了一个查询,通常需要7到11秒才能返回一个集合,我想让它更快。我知道我必须使用if索引来实现这一点,所以我已经正确地使用了它们。不幸的是,它将给出相同的执行时间:以下是我使用的查询:

WITH trackin8080 AS
(
  SELECT DISTINCT
    c.containerid
    , c.containername
    , hml.historyid
    , hml.wiptrackinggroupkeyid
    , hml.qty
    , hml.txndate
  FROM CONTAINER c  
  JOIN
  (
    SELECT 
      MAX(wwl.wiptrackinggroupkeyid) OVER (PARTITION BY wwl.containerid) wiptrackiggroupkeyid
      , wwl.containerid
    FROM
    (
      SELECT
        wl.wiptrackinggroupkeyid
        , wl.containerid
      FROM a_wiplot wl
      WHERE wl.specname IN ('8080_STAB_BAKE_1_FT')
      AND wl.workflowname IN ('6_2B2R-DP_WIP') AND wl.containername LIKE :lotid AND wl.containername NOT LIKE '%TEST%'

      UNION ALL

      SELECT
        wl.wiptrackinggroupkeyid
        , wl.containerid
      FROM a_wiplothistory wl
      WHERE wl.specname IN ('8080_STAB_BAKE_1_FT')
      AND wl.workflowname IN ('6_2B2R-DP_WIP') AND wl.containername LIKE :lotid AND wl.containername NOT LIKE '%TEST%'
    )wwl
    GROUP BY wwl.containerid, wwl.wiptrackinggroupkeyid
  )wl ON c.containerid = wl.containerid
  JOIN historymainline hml ON c.containerid = hml.historyid AND hml.cdoname = 'TrackInLot' AND hml.specname IN ('8080_STAB_BAKE_1_FT') AND wl.wiptrackiggroupkeyid = hml.wiptrackinggroupkeyid --AND hml.txndate > TRUNC(SYSDATE - 7)
  WHERE hml.workflowname IN ('6_2B2R-DP_WIP') AND c.containername LIKE :lotid
), trackout8080 AS
(
  SELECT DISTINCT
    c.containerid
    , c.containername
    , hml.historyid
    , hml.historymainlineid
    , hml.txndate
    , hml.qty
  FROM trackin8080 ti
  INNER JOIN container c ON ti.containerid = c.containerid
  INNER JOIN product p ON c.productid = p.productid
  INNER JOIN historymainline hml ON c.containerid = hml.historyid AND hml.cdoname = 'TrackOutLot' AND hml.specname IN ('8080_STAB_BAKE_1_FT')
  WHERE hml.workflowname IN ('6_2B2R-DP_WIP') AND c.containername LIKE :lotid
), movein8527 AS
(
  SELECT DISTINCT
    c.containerid
    , c.containername
    , hml.historyid
    , hml.historymainlineid
    , hml.txndate
    , hml.shiftname
    , hml.employeeid
    , hml.qty
    , p.device
    , p.brandname
    , hml.specname
    , hml.comments
  FROM trackin8080 ti
  INNER JOIN container c ON ti.containerid = c.containerid
  INNER JOIN product p ON c.productid = p.productid
  INNER JOIN historymainline hml ON c.containerid = hml.historyid
  WHERE (hml.callbycdoname IN ('TestWIPMain', 'TestWIPMoveNonStd') AND hml.cdoname = 'MoveInLot' AND hml.specname IN ('8527_STAGE_BAKE_FT'))
  AND hml.workflowname IN ('6_2B2R-DP_WIP') AND c.containername LIKE :lotid
), moveout8925 AS
(
  SELECT DISTINCT
    c.containerid
    , c.containername
    , hml.historyid
    , hml.historymainlineid
    , hml.txndate
    , hml.shiftname
    , hml.employeeid
    , hml.qty
    , p.device
    , p.brandname
    , hml.specname
    , hml.comments
  FROM trackin8080 ti
  INNER JOIN container c ON ti.containerid = c.containerid
  INNER JOIN product p ON c.productid = p.productid
  INNER JOIN
  (
    SELECT 
      MAX(wwl.wiptrackinggroupkeyid) OVER (PARTITION BY wwl.containerid) wiptrackiggroupkeyid
      , wwl.containerid
    FROM
    (
      SELECT
        wl.wiptrackinggroupkeyid
        , wl.containerid
      FROM a_wiplot wl
      WHERE wl.specname IN ('8925_2ND_RM_TST_SOT_2_FT')
      AND wl.workflowname IN ('6_2B2R-DP_WIP') AND wl.containername LIKE :lotid AND wl.containername NOT LIKE '%TEST%'

      UNION ALL

      SELECT
        wl.wiptrackinggroupkeyid
        , wl.containerid
      FROM a_wiplothistory wl
      WHERE wl.specname IN ('8925_2ND_RM_TST_SOT_2_FT')
      AND wl.workflowname IN ('6_2B2R-DP_WIP') AND wl.containername LIKE :lotid AND wl.containername NOT LIKE '%TEST%'
    )wwl
    GROUP BY wwl.containerid, wwl.wiptrackinggroupkeyid
  )wl ON c.containerid = wl.containerid
  INNER JOIN historymainline hml ON c.containerid = hml.historyid AND wl.wiptrackiggroupkeyid = hml.wiptrackinggroupkeyid
  WHERE (hml.callbycdoname IN ('LotMoveOut', 'MoveLot', 'TestWIPMoveNonStd') AND hml.cdoname = 'CreateFirstInsertion' AND hml.specname IN ('8925_2ND_RM_TST_SOT_2_FT'))
  AND hml.workflowname IN ('6_2B2R-DP_WIP') AND c.containername LIKE :lotid
), trackin8090 AS
(
  SELECT DISTINCT
    c.containerid
    , c.containername
    , hml.historyid
    , hml.wiptrackinggroupkeyid
    , hml.qty
    , hml.txndate
  FROM CONTAINER c  
  JOIN
  (
    SELECT 
      MAX(wwl.wiptrackinggroupkeyid) OVER (PARTITION BY wwl.containerid) wiptrackiggroupkeyid
      , wwl.containerid
    FROM
    (
      SELECT
        wl.wiptrackinggroupkeyid
        , wl.containerid
      FROM a_wiplot wl
      WHERE wl.specname IN ('8090_2ND_BAKE_IN_OVEN_SOT_FT')
      AND wl.workflowname IN ('6_2B2R-DP_WIP') AND wl.containername LIKE :lotid AND wl.containername NOT LIKE '%TEST%'

      UNION ALL

      SELECT
        wl.wiptrackinggroupkeyid
        , wl.containerid
      FROM a_wiplothistory wl
      WHERE wl.specname IN ('8090_2ND_BAKE_IN_OVEN_SOT_FT')
      AND wl.workflowname IN ('6_2B2R-DP_WIP') AND wl.containername LIKE :lotid AND wl.containername NOT LIKE '%TEST%'
    )wwl
    GROUP BY wwl.containerid, wwl.wiptrackinggroupkeyid
  )wl ON c.containerid = wl.containerid
  JOIN historymainline hml ON c.containerid = hml.historyid AND hml.cdoname = 'TrackInLot' AND hml.specname IN ('8090_2ND_BAKE_IN_OVEN_SOT_FT') AND wl.wiptrackiggroupkeyid = hml.wiptrackinggroupkeyid --AND hml.txndate > TRUNC(SYSDATE - 7)
  WHERE hml.workflowname IN ('6_2B2R-DP_WIP') AND c.containername LIKE :lotid
), trackout8090 AS
(
  SELECT DISTINCT
    c.containerid
    , c.containername
    , hml.historyid
    , hml.historymainlineid
    , hml.txndate
    , hml.qty
  FROM trackin8080 ti
  INNER JOIN container c ON ti.containerid = c.containerid
  INNER JOIN product p ON c.productid = p.productid
  INNER JOIN historymainline hml ON c.containerid = hml.historyid AND hml.cdoname = 'TrackOutLot' AND hml.specname IN ('8090_2ND_BAKE_IN_OVEN_SOT_FT')
  WHERE hml.workflowname IN ('6_2B2R-DP_WIP') AND c.containername LIKE :lotid
)

SELECT
  ti8080.containername
  , ti8080.qty qtyatb1
  , to_char(ti8080.txndate, 'MM/DD/YYYY HH:MI:SS PM') trackindateb1
  , to_char(ti8080.txndate + 12/24, 'MM/DD/YYYY HH:MI:SS PM') FCSTDOvenOutB1
  , NVL(to_char(to8080.txndate, 'MM/DD/YYYY HH:MI:SS PM'), '-') trackoutdateb1
  , CASE WHEN to8080.txndate IS NULL THEN
      '-'
    ELSE
      to_char(ROUND((to8080.txndate - ti8080.txndate) * 24, 4))
    END AS elapsedtimebake1
  , NVL(to_char(mi8527.qty), '-') qtyatstaging
  , NVL(to_char(mi8527.txndate, 'MM/DD/YYYY HH:MI:SS PM'), '-') moveinto8527
  , NVL(to_char(mi8527.txndate + 24/24, 'MM/DD/YYYY HH:MI:SS PM'), '-') FCSTDEndDate
  , NVL(to_char(mo8925.txndate, 'MM/DD/YYYY HH:MI:SS PM'), '-') moveoutto8925
  , CASE WHEN mo8925.txndate IS NULL THEN
      '-'
    ELSE
      to_char(ROUND((mo8925.txndate - mi8527.txndate) * 24, 4))
    END AS elapsedtimestage
  , NVL(to_char(ti8090.qty), '-') qtyatb2
  , NVL(to_char(ti8090.txndate, 'MM/DD/YYYY HH:MI:SS PM'), '-') trackindateb2
  , CASE WHEN ti8090.txndate IS NULL THEN
      '-'
    ELSE
      to_char(ti8090.txndate + 24/24, 'MM/DD/YYYY HH:MI:SS PM')
    END AS FCSTDOvenOutB2
  , NVL(to_char(to8090.txndate, 'MM/DD/YYYY HH:MI:SS PM'), '-') trackoutdateb2
  , CASE WHEN to8090.txndate IS NULL THEN
      '-'
    ELSE
      to_char(ROUND((to8090.txndate - ti8090.txndate) * 24, 4))
    END AS elapsedtimebake2
FROM trackin8080 ti8080
LEFT JOIN trackout8080 to8080 ON ti8080.containerid = to8080.containerid AND to8080.txndate >= ti8080.txndate
LEFT JOIN movein8527 mi8527 ON ti8080.containerid = mi8527.containerid AND mi8527.txndate >= to8080.txndate
LEFT JOIN moveout8925 mo8925 ON ti8080.containerid = mo8925.containerid AND mo8925.txndate >= mi8527.txndate
LEFT JOIN trackin8090 ti8090 ON ti8080.containerid = ti8090.containerid AND ti8090.txndate >= mi8527.txndate
LEFT JOIN trackout8090 to8090 ON ti8080.containerid = to8090.containerid AND to8090.txndate >= ti8090.txndate
WHERE ti8080.containername LIKE :lotid AND ti8080.containername NOT LIKE '%TEST%' AND trunc(ti8080.txndate) > TRUNC(SYSDATE-7)
ORDER BY ti8080.containername
以及解释计划:

| Id  | Operation                                   | Name                        | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                            |                             |     1 |   149 | 51140   (1)| 00:10:14 |
|   1 |  TEMP TABLE TRANSFORMATION                  |                             |       |       |            |          |
|   2 |   LOAD AS SELECT                            | SYS_TEMP_0FD9DE946_81931B5A |       |       |            |          |
|   3 |    HASH UNIQUE                              |                             |     1 |    98 | 17000   (1)| 00:03:25 |
|   4 |     VIEW                                    |                             |     1 |    98 | 16999   (1)| 00:03:24 |
|   5 |      NESTED LOOPS                           |                             |       |       |            |          |
|   6 |       NESTED LOOPS                          |                             |     1 |   119 | 16999   (1)| 00:03:24 |
|   7 |        VIEW                                 |                             |     1 |    47 | 16964   (1)| 00:03:24 |
|   8 |         NESTED LOOPS                        |                             |       |       |            |          |
|   9 |          NESTED LOOPS                       |                             |     1 |    64 | 16964   (1)| 00:03:24 |
|  10 |           VIEW                              |                             |     1 |    35 | 16962   (1)| 00:03:24 |
|  11 |            WINDOW BUFFER                    |                             |     1 |    34 | 16962   (1)| 00:03:24 |
|  12 |             SORT GROUP BY                   |                             |     1 |    34 | 16962   (1)| 00:03:24 |
|  13 |              VIEW                           |                             |     2 |    68 | 16961   (1)| 00:03:24 |
|  14 |               UNION-ALL                     |                             |       |       |            |          |
|* 15 |                TABLE ACCESS FULL            | A_WIPLOT                    |     1 |    87 |   274   (1)| 00:00:04 |
|* 16 |                TABLE ACCESS FULL            | A_WIPLOTHISTORY             |     1 |    81 | 16688   (1)| 00:03:21 |
|* 17 |           INDEX UNIQUE SCAN                 | CONTAINER450                |     1 |       |     1   (0)| 00:00:01 |
|* 18 |          TABLE ACCESS BY INDEX ROWID        | CONTAINER                   |     1 |    29 |     2   (0)| 00:00:01 |
|* 19 |        INDEX RANGE SCAN                     | HISTORYMAINLINE2            |    46 |       |     3   (0)| 00:00:01 |
|* 20 |       TABLE ACCESS BY INDEX ROWID           | HISTORYMAINLINE             |     1 |    72 |    36   (0)| 00:00:01 |
|  21 |   SORT ORDER BY                             |                             |     1 |   149 | 34140   (1)| 00:06:50 |
|* 22 |    HASH JOIN OUTER                          |                             |     1 |   149 | 34139   (1)| 00:06:50 |
|  23 |     VIEW                                    |                             |     1 |   123 | 34096   (1)| 00:06:50 |
|* 24 |      HASH JOIN OUTER                        |                             |     1 |   160 | 34096   (1)| 00:06:50 |
|* 25 |       HASH JOIN OUTER                       |                             |     1 |   120 | 17094   (1)| 00:03:26 |
|  26 |        VIEW                                 |                             |     1 |    93 |    88   (4)| 00:00:02 |
|* 27 |         HASH JOIN OUTER                     |                             |     1 |   111 |    88   (4)| 00:00:02 |
|  28 |          VIEW                               |                             |     1 |    71 |    45   (5)| 00:00:01 |
|* 29 |           HASH JOIN OUTER                   |                             |     1 |    89 |    45   (5)| 00:00:01 |
|* 30 |            VIEW                             |                             |     1 |    62 |     2   (0)| 00:00:01 |
|  31 |             TABLE ACCESS FULL               | SYS_TEMP_0FD9DE946_81931B5A |     1 |    66 |     2   (0)| 00:00:01 |
|  32 |            VIEW                             |                             |     1 |    27 |    42   (3)| 00:00:01 |
|  33 |             HASH UNIQUE                     |                             |     1 |   161 |    42   (3)| 00:00:01 |
|  34 |              NESTED LOOPS                   |                             |       |       |            |          |
|  35 |               NESTED LOOPS                  |                             |     1 |   161 |    41   (0)| 00:00:01 |
|  36 |                NESTED LOOPS                 |                             |     1 |    80 |     5   (0)| 00:00:01 |
|  37 |                 NESTED LOOPS                |                             |     1 |    63 |     4   (0)| 00:00:01 |
|  38 |                  VIEW                       |                             |     1 |    17 |     2   (0)| 00:00:01 |
|  39 |                   TABLE ACCESS FULL         | SYS_TEMP_0FD9DE946_81931B5A |     1 |    66 |     2   (0)| 00:00:01 |
|* 40 |                  TABLE ACCESS BY INDEX ROWID| CONTAINER                   |     1 |    46 |     2   (0)| 00:00:01 |
|* 41 |                   INDEX UNIQUE SCAN         | CONTAINER450                |     1 |       |     1   (0)| 00:00:01 |
|* 42 |                 INDEX UNIQUE SCAN           | PRODUCT502                  |     1 |    17 |     1   (0)| 00:00:01 |
|* 43 |                INDEX RANGE SCAN             | HISTORYMAINLINE2            |    46 |       |     3   (0)| 00:00:01 |
|* 44 |               TABLE ACCESS BY INDEX ROWID   | HISTORYMAINLINE             |     1 |    81 |    36   (0)| 00:00:01 |
|  45 |          VIEW                               |                             |     1 |    40 |    43   (3)| 00:00:01 |
|  46 |           HASH UNIQUE                       |                             |     1 |   228 |    43   (3)| 00:00:01 |
|  47 |            NESTED LOOPS                     |                             |       |       |            |          |
|  48 |             NESTED LOOPS                    |                             |     1 |   228 |    42   (0)| 00:00:01 |
|  49 |              NESTED LOOPS                   |                             |     1 |    99 |     6   (0)| 00:00:01 |
|  50 |               NESTED LOOPS                  |                             |     1 |    63 |     4   (0)| 00:00:01 |
|  51 |                VIEW                         |                             |     1 |    17 |     2   (0)| 00:00:01 |
|  52 |                 TABLE ACCESS FULL           | SYS_TEMP_0FD9DE946_81931B5A |     1 |    66 |     2   (0)| 00:00:01 |
|* 53 |                TABLE ACCESS BY INDEX ROWID  | CONTAINER                   |     1 |    46 |     2   (0)| 00:00:01 |
|* 54 |                 INDEX UNIQUE SCAN           | CONTAINER450                |     1 |       |     1   (0)| 00:00:01 |
|  55 |               TABLE ACCESS BY INDEX ROWID   | PRODUCT                     |     1 |    36 |     2   (0)| 00:00:01 |
|* 56 |                INDEX UNIQUE SCAN            | PRODUCT502                  |     1 |       |     1   (0)| 00:00:01 |
|* 57 |              INDEX RANGE SCAN               | HISTORYMAINLINE2            |    46 |       |     3   (0)| 00:00:01 |
|* 58 |             TABLE ACCESS BY INDEX ROWID     | HISTORYMAINLINE             |     1 |   129 |    36   (0)| 00:00:01 |
|  59 |        VIEW                                 |                             |     1 |    27 | 17006   (1)| 00:03:25 |
|  60 |         HASH UNIQUE                         |                             |     1 |   271 | 17006   (1)| 00:03:25 |
|* 61 |          HASH JOIN                          |                             |     1 |   271 | 17005   (1)| 00:03:25 |
|  62 |           NESTED LOOPS                      |                             |       |       |            |          |
|  63 |            NESTED LOOPS                     |                             |     1 |   236 |    42   (0)| 00:00:01 |
|  64 |             NESTED LOOPS                    |                             |     1 |    99 |     6   (0)| 00:00:01 |
|  65 |              NESTED LOOPS                   |                             |     1 |    63 |     4   (0)| 00:00:01 |
|  66 |               VIEW                          |                             |     1 |    17 |     2   (0)| 00:00:01 |
|  67 |                TABLE ACCESS FULL            | SYS_TEMP_0FD9DE946_81931B5A |     1 |    66 |     2   (0)| 00:00:01 |
|* 68 |               TABLE ACCESS BY INDEX ROWID   | CONTAINER                   |     1 |    46 |     2   (0)| 00:00:01 |
|* 69 |                INDEX UNIQUE SCAN            | CONTAINER450                |     1 |       |     1   (0)| 00:00:01 |
|  70 |              TABLE ACCESS BY INDEX ROWID    | PRODUCT                     |     1 |    36 |     2   (0)| 00:00:01 |
|* 71 |               INDEX UNIQUE SCAN             | PRODUCT502                  |     1 |       |     1   (0)| 00:00:01 |
|* 72 |             INDEX RANGE SCAN                | HISTORYMAINLINE2            |    46 |       |     3   (0)| 00:00:01 |
|* 73 |            TABLE ACCESS BY INDEX ROWID      | HISTORYMAINLINE             |     1 |   137 |    36   (0)| 00:00:01 |
|  74 |           VIEW                              |                             |     1 |    35 | 16962   (1)| 00:03:24 |
|  75 |            WINDOW BUFFER                    |                             |     1 |    34 | 16962   (1)| 00:03:24 |
|  76 |             SORT GROUP BY                   |                             |     1 |    34 | 16962   (1)| 00:03:24 |
|  77 |              VIEW                           |                             |     2 |    68 | 16961   (1)| 00:03:24 |
|  78 |               UNION-ALL                     |                             |       |       |            |          |
|* 79 |                TABLE ACCESS FULL            | A_WIPLOT                    |     1 |    87 |   274   (1)| 00:00:04 |
|* 80 |                TABLE ACCESS FULL            | A_WIPLOTHISTORY             |     1 |    81 | 16688   (1)| 00:03:21 |
|  81 |       VIEW                                  |                             |     1 |    40 | 17001   (1)| 00:03:25 |
|  82 |        HASH UNIQUE                          |                             |     1 |   136 | 17001   (1)| 00:03:25 |
|  83 |         NESTED LOOPS                        |                             |       |       |            |          |
|  84 |          NESTED LOOPS                       |                             |     1 |   136 | 17000   (1)| 00:03:25 |
|  85 |           NESTED LOOPS                      |                             |     1 |    64 | 16964   (1)| 00:03:24 |
|  86 |            VIEW                             |                             |     1 |    35 | 16962   (1)| 00:03:24 |
|  87 |             WINDOW BUFFER                   |                             |     1 |    34 | 16962   (1)| 00:03:24 |
|  88 |              SORT GROUP BY                  |                             |     1 |    34 | 16962   (1)| 00:03:24 |
|  89 |               VIEW                          |                             |     2 |    68 | 16961   (1)| 00:03:24 |
|  90 |                UNION-ALL                    |                             |       |       |            |          |
|* 91 |                 TABLE ACCESS FULL           | A_WIPLOT                    |     1 |    87 |   274   (1)| 00:00:04 |
|* 92 |                 TABLE ACCESS FULL           | A_WIPLOTHISTORY             |     1 |    81 | 16688   (1)| 00:03:21 |
|* 93 |            TABLE ACCESS BY INDEX ROWID      | CONTAINER                   |     1 |    29 |     2   (0)| 00:00:01 |
|* 94 |             INDEX UNIQUE SCAN               | CONTAINER450                |     1 |       |     1   (0)| 00:00:01 |
|* 95 |           INDEX RANGE SCAN                  | HISTORYMAINLINE2            |    46 |       |     3   (0)| 00:00:01 |
|* 96 |          TABLE ACCESS BY INDEX ROWID        | HISTORYMAINLINE             |     1 |    72 |    36   (0)| 00:00:01 |
|  97 |     VIEW                                    |                             |     1 |    26 |    42   (3)| 00:00:01 |
|  98 |      HASH UNIQUE                            |                             |     1 |   161 |    42   (3)| 00:00:01 |
|  99 |       NESTED LOOPS                          |                             |       |       |            |          |
| 100 |        NESTED LOOPS                         |                             |     1 |   161 |    41   (0)| 00:00:01 |
| 101 |         NESTED LOOPS                        |                             |     1 |    80 |     5   (0)| 00:00:01 |
| 102 |          NESTED LOOPS                       |                             |     1 |    63 |     4   (0)| 00:00:01 |
| 103 |           VIEW                              |                             |     1 |    17 |     2   (0)| 00:00:01 |
| 104 |            TABLE ACCESS FULL                | SYS_TEMP_0FD9DE946_81931B5A |     1 |    66 |     2   (0)| 00:00:01 |
|*105 |           TABLE ACCESS BY INDEX ROWID       | CONTAINER                   |     1 |    46 |     2   (0)| 00:00:01 |
|*106 |            INDEX UNIQUE SCAN                | CONTAINER450                |     1 |       |     1   (0)| 00:00:01 |
|*107 |          INDEX UNIQUE SCAN                  | PRODUCT502                  |     1 |    17 |     1   (0)| 00:00:01 |
|*108 |         INDEX RANGE SCAN                    | HISTORYMAINLINE2            |    46 |       |     3   (0)| 00:00:01 |
|*109 |        TABLE ACCESS BY INDEX ROWID          | HISTORYMAINLINE             |     1 |    81 |    36   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

  15 - filter("WL"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND "WL"."SPECNAME"='8080_STAB_BAKE_1_FT' AND 
              "WL"."CONTAINERNAME" LIKE :LOTID AND "WL"."CONTAINERNAME" NOT LIKE '%TEST%' AND "WL"."CONTAINERNAME" IS NOT NULL)
  16 - filter("WL"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND "WL"."SPECNAME"='8080_STAB_BAKE_1_FT' AND 
              "WL"."CONTAINERNAME" LIKE :LOTID AND "WL"."CONTAINERNAME" NOT LIKE '%TEST%' AND "WL"."CONTAINERNAME" IS NOT NULL)
  17 - access("C"."CONTAINERID"="WL"."CONTAINERID")
  18 - filter("C"."CONTAINERNAME" LIKE :LOTID)
  19 - access("C"."CONTAINERID"="HML"."HISTORYID")
  20 - filter("HML"."WIPTRACKINGGROUPKEYID" IS NOT NULL AND "HML"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND 
              "HML"."SPECNAME"='8080_STAB_BAKE_1_FT' AND "HML"."CDONAME"='TrackInLot' AND 
              "WL"."WIPTRACKIGGROUPKEYID"="HML"."WIPTRACKINGGROUPKEYID")
  22 - access("TI8080"."CONTAINERID"="TO8090"."CONTAINERID"(+))
       filter("TO8090"."TXNDATE"(+)>="TI8090"."TXNDATE")
  24 - access("from$_subquery$_054"."QCSJ_C000000005200000"="TI8090"."CONTAINERID"(+))
       filter("TI8090"."TXNDATE"(+)>="from$_subquery$_054"."TXNDATE")
  25 - access("TI8080"."CONTAINERID"="MO8925"."CONTAINERID"(+))
       filter("MO8925"."TXNDATE"(+)>="MI8527"."TXNDATE")
  27 - access("TI8080"."CONTAINERID"="MI8527"."CONTAINERID"(+))
       filter("MI8527"."TXNDATE"(+)>="TO8080"."TXNDATE")
  29 - access("TI8080"."CONTAINERID"="TO8080"."CONTAINERID"(+))
       filter("TO8080"."TXNDATE"(+)>="TI8080"."TXNDATE")
  30 - filter("TI8080"."CONTAINERNAME" LIKE :LOTID AND "TI8080"."CONTAINERNAME" NOT LIKE '%TEST%' AND 
              "TI8080"."CONTAINERNAME" IS NOT NULL AND TRUNC(INTERNAL_FUNCTION("TI8080"."TXNDATE"))>TRUNC(SYSDATE@!-7))
  40 - filter("C"."CONTAINERNAME" LIKE :LOTID)
  41 - access("TI"."CONTAINERID"="C"."CONTAINERID")
  42 - access("C"."PRODUCTID"="P"."PRODUCTID")
  43 - access("C"."CONTAINERID"="HML"."HISTORYID")
  44 - filter("HML"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND "HML"."SPECNAME"='8080_STAB_BAKE_1_FT' AND 
              "HML"."CDONAME"='TrackOutLot')
  53 - filter("C"."CONTAINERNAME" LIKE :LOTID)
  54 - access("TI"."CONTAINERID"="C"."CONTAINERID")
  56 - access("C"."PRODUCTID"="P"."PRODUCTID")
  57 - access("C"."CONTAINERID"="HML"."HISTORYID")
  58 - filter("HML"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND "HML"."SPECNAME"='8527_STAGE_BAKE_FT' AND 
              "HML"."CDONAME"='MoveInLot' AND ("HML"."CALLBYCDONAME"='TestWIPMain' OR "HML"."CALLBYCDONAME"='TestWIPMoveNonStd'))
  61 - access("WL"."WIPTRACKIGGROUPKEYID"="HML"."WIPTRACKINGGROUPKEYID" AND "C"."CONTAINERID"="WL"."CONTAINERID")
  68 - filter("C"."CONTAINERNAME" LIKE :LOTID)
  69 - access("TI"."CONTAINERID"="C"."CONTAINERID")
  71 - access("C"."PRODUCTID"="P"."PRODUCTID")
  72 - access("C"."CONTAINERID"="HML"."HISTORYID")
  73 - filter("HML"."WIPTRACKINGGROUPKEYID" IS NOT NULL AND "HML"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND 
              "HML"."SPECNAME"='8925_2ND_RM_TST_SOT_2_FT' AND "HML"."CDONAME"='CreateFirstInsertion' AND 
              ("HML"."CALLBYCDONAME"='LotMoveOut' OR "HML"."CALLBYCDONAME"='MoveLot' OR 
              "HML"."CALLBYCDONAME"='TestWIPMoveNonStd'))
  79 - filter("WL"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND "WL"."SPECNAME"='8925_2ND_RM_TST_SOT_2_FT' AND 
              "WL"."CONTAINERNAME" LIKE :LOTID AND "WL"."CONTAINERNAME" NOT LIKE '%TEST%' AND "WL"."CONTAINERNAME" IS NOT NULL)
  80 - filter("WL"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND "WL"."SPECNAME"='8925_2ND_RM_TST_SOT_2_FT' AND 
              "WL"."CONTAINERNAME" LIKE :LOTID AND "WL"."CONTAINERNAME" NOT LIKE '%TEST%' AND "WL"."CONTAINERNAME" IS NOT NULL)
  91 - filter("WL"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND "WL"."SPECNAME"='8090_2ND_BAKE_IN_OVEN_SOT_FT' AND 
              "WL"."CONTAINERNAME" LIKE :LOTID AND "WL"."CONTAINERNAME" NOT LIKE '%TEST%' AND "WL"."CONTAINERNAME" IS NOT NULL)
  92 - filter("WL"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND "WL"."SPECNAME"='8090_2ND_BAKE_IN_OVEN_SOT_FT' AND 
              "WL"."CONTAINERNAME" LIKE :LOTID AND "WL"."CONTAINERNAME" NOT LIKE '%TEST%' AND "WL"."CONTAINERNAME" IS NOT NULL)
  93 - filter("C"."CONTAINERNAME" LIKE :LOTID)
  94 - access("C"."CONTAINERID"="WL"."CONTAINERID")
  95 - access("C"."CONTAINERID"="HML"."HISTORYID")
  96 - filter("HML"."WIPTRACKINGGROUPKEYID" IS NOT NULL AND "HML"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND 
              "HML"."SPECNAME"='8090_2ND_BAKE_IN_OVEN_SOT_FT' AND "HML"."CDONAME"='TrackInLot' AND 
              "WL"."WIPTRACKIGGROUPKEYID"="HML"."WIPTRACKINGGROUPKEYID")
 105 - filter("C"."CONTAINERNAME" LIKE :LOTID)
 106 - access("TI"."CONTAINERID"="C"."CONTAINERID")
 107 - access("C"."PRODUCTID"="P"."PRODUCTID")
 108 - access("C"."CONTAINERID"="HML"."HISTORYID")
 109 - filter("HML"."WORKFLOWNAME"='6_2B2R-DP_WIP' AND "HML"."SPECNAME"='8090_2ND_BAKE_IN_OVEN_SOT_FT' AND 
              "HML"."CDONAME"='TrackOutLot')

看起来几乎所有的表都只有一行。在这种情况下,全表扫描会更快。您可以通过指定完整提示来实现这一点。

统计数据表明Oracle认为您的大多数表只包含一行。这是真的吗?还是你需要收集一些适当的统计数据来让Oracle工作?你好,Tony,查询实际上返回了10行,仅显示这些行就花了我11秒钟。有一个建议,请尝试使用sqlfiddle.com或任何其他替代方法(如果有此类问题的话)。如果您为所有创建的表提供SQLFIDLE,您将更快得到答案。谢谢brhneser。我将尝试回答一个更好的问题。我建议您收集查询中使用的表的统计信息,然后使用更新的执行计划更新您的问题。在您收集统计数据之后,Oracle很有可能会生成更好的执行计划,并且查询可能会因为这些统计数据而运行得很快。试试看,然后告诉我们结果。至于生成统计信息:请参见dbms_stats.gather_table_stats()过程。我想知道如何才能做到这一点。我对甲骨文几乎是新手。非常感谢。oracle文档是您的朋友,当然还有谷歌。