SELECT NVL (PANELID, A.USN) INPUTUSN,
A.USN,
A.UPN,
A.TOUR,
(CASE WHEN A.USN = PANELID THEN '' ELSE A.USN END) OUTPUTUSN,
A.STAGE,
A.NEXTSTAGE,
A.STATUS,
C.PRODUCTCODE,
C.PRODUCTTEXT,
D.CARTONID,
TO_CHAR (E.PACKTIME, 'YYYYMMDDHH24MISS') PACKTIME1,
TO_CHAR (D.TRNDATE, 'YYYYMMDDHH24MISS') PACKTIME2,
H.ERRORCODE
FROM SFCUSN A
LEFT JOIN
(SELECT DISTINCT UPN, PRODUCTCODE, PRODUCTTEXT FROM SFCUPNINFO) C
ON A.UPN = C.UPN
LEFT JOIN SFCCARTONITEM D ON A.USN = D.USN
LEFT JOIN LMSPACKINFO E ON A.USN = E.USN
LEFT JOIN SFCUSNDEFECT H
ON A.USN = H.USN
AND NOT EXISTS
(SELECT USN
FROM SFCUSNDEFECT I
WHERE I.USN = H.USN AND I.DEFECTDATE > H.DEFECTDATE)
WHERE NVL (PANELID, A.USN) IN
(SELECT CELLUSN
FROM SFCPEARLINFO
WHERE STATUS IN (1, 2, 3)
AND trndate BETWEEN TO_DATE ('20150701', 'yyyymmdd')
AND TO_DATE ('20150720', 'yyyymmdd'))-------------------------------------------------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."CELLUSN"="B"."INPUTUSN"(+))
2 - filter("A"."STATUS"=1 OR "A"."STATUS"=2 OR "A"."STATUS"=3)
3 - access("A"."TRNDATE">=TO_DATE(' 2015-07-01 00:00:00', 'syyyy-mm-dd hh24:m
i:ss') AND
"A"."TRNDATE"<=TO_DATE(' 2015-07-20 00:00:00', 'syyyy-mm-dd hh24:m
i:ss'))
6 - access("A"."USN"="D"."USN"(+))
7 - access("A"."USN"="E"."USN"(+))
8 - access("A"."UPN"="C"."UPN"(+))
12 - access("CELLUSN"=NVL("A"."PANELID","A"."USN"))
13 - filter("STATUS"=1 OR "STATUS"=2 OR "STATUS"=3)
14 - access("TRNDATE">=TO_DATE(' 2015-07-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss
') AND "TRNDATE"<=TO_DATE('
2015-07-20 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
21 - access("A"."USN"="H"."USN")
22 - filter("I"."DEFECTDATE">"H"."DEFECTDATE")
23 - access("I"."USN"="H"."USN")
A.USN,
A.UPN,
A.TOUR,
(CASE WHEN A.USN = PANELID THEN '' ELSE A.USN END) OUTPUTUSN,
A.STAGE,
A.NEXTSTAGE,
A.STATUS,
C.PRODUCTCODE,
C.PRODUCTTEXT,
D.CARTONID,
TO_CHAR (E.PACKTIME, 'YYYYMMDDHH24MISS') PACKTIME1,
TO_CHAR (D.TRNDATE, 'YYYYMMDDHH24MISS') PACKTIME2,
H.ERRORCODE
FROM SFCUSN A
LEFT JOIN
(SELECT DISTINCT UPN, PRODUCTCODE, PRODUCTTEXT FROM SFCUPNINFO) C
ON A.UPN = C.UPN
LEFT JOIN SFCCARTONITEM D ON A.USN = D.USN
LEFT JOIN LMSPACKINFO E ON A.USN = E.USN
LEFT JOIN SFCUSNDEFECT H
ON A.USN = H.USN
AND NOT EXISTS
(SELECT USN
FROM SFCUSNDEFECT I
WHERE I.USN = H.USN AND I.DEFECTDATE > H.DEFECTDATE)
WHERE NVL (PANELID, A.USN) IN
(SELECT CELLUSN
FROM SFCPEARLINFO
WHERE STATUS IN (1, 2, 3)
AND trndate BETWEEN TO_DATE ('20150701', 'yyyymmdd')
AND TO_DATE ('20150720', 'yyyymmdd'))-------------------------------------------------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."CELLUSN"="B"."INPUTUSN"(+))
2 - filter("A"."STATUS"=1 OR "A"."STATUS"=2 OR "A"."STATUS"=3)
3 - access("A"."TRNDATE">=TO_DATE(' 2015-07-01 00:00:00', 'syyyy-mm-dd hh24:m
i:ss') AND
"A"."TRNDATE"<=TO_DATE(' 2015-07-20 00:00:00', 'syyyy-mm-dd hh24:m
i:ss'))
6 - access("A"."USN"="D"."USN"(+))
7 - access("A"."USN"="E"."USN"(+))
8 - access("A"."UPN"="C"."UPN"(+))
12 - access("CELLUSN"=NVL("A"."PANELID","A"."USN"))
13 - filter("STATUS"=1 OR "STATUS"=2 OR "STATUS"=3)
14 - access("TRNDATE">=TO_DATE(' 2015-07-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss
') AND "TRNDATE"<=TO_DATE('
2015-07-20 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
21 - access("A"."USN"="H"."USN")
22 - filter("I"."DEFECTDATE">"H"."DEFECTDATE")
23 - access("I"."USN"="H"."USN")
A.UPN,C.UPN, D.USN,E.USN,H.USN,I.DEFECTDATE , H.DEFECTDATE,SFCPEARLINFO.STATUS,SFCPEARLINFO.trndate2、 NVL (PANELID, A.USN) 这个会导致索引失效。
改成 PANELID in(....) or A.USN in ( )