您好,
这条语句 T_ERROR_FLOW 与 T_STANDARD_FLOW表各200W数据,其它表数据很小,执行计划不走索引,有没有办法提高执行时间?
谢谢
SELECT
*
FROM
T_STANDARD_FLOW SF
INNER JOIN T_ERROR_FLOW EF ON EF.ERROR_ID = SF. ID
LEFT JOIN T_TRAN_CODE TC ON (
TC.ENCODE = SF.TRAN_CODE
AND TC.SYSTEM_CODE = SF.SYSTEM_ID
AND TC.ORFLAG = SF.ORFLAG
AND SF.CURRENCY = TC.CURRENCY
)
LEFT JOIN T_SYSTEM S ON S.CODE = SF.SYSTEM_ID
AND SF.STATE = '2'
AND (
SF.AMT > 0
OR SF.DISCOUNTAMT > 0
OR SF.AMT < 0
OR SF.DISCOUNTAMT < 0
)
AND SF.PRODUCTID IN (
SELECT DISTINCT
(P .PRODUCT_ID)
FROM
T_PRODUCT_SUBJECT PS
LEFT JOIN T_PRODUCT P ON PS.PRODUCT_ID = P . ID
)
1601407 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 1795839580
--------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
--------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1961K| 1494M| | 17M (2)| 59:44:07 | | |
| 1 | NESTED LOOPS OUTER | | 1961K| 1494M| | 17M (2)| 59:44:07 | | |
|* 2 | HASH JOIN RIGHT OUTER| | 1961K| 725M| | 62096 (1)| 00:12:26 | | |
| 3 | TABLE ACCESS FULL | T_TRAN_CODE | 2505 | 207K| | 11 (0)| 00:00:01 | | |
|* 4 | HASH JOIN | | 1961K| 566M| 207M| 62061 (1)| 00:12:25 | | |
| 5 | TABLE ACCESS FULL | T_ERROR_FLOW | 1961K| 185M| | 7833 (2)| 00:01:35 | | |
| 6 | PARTITION RANGE ALL| | 2120K| 412M| | 22167 (2)| 00:04:27 | 1 |1048575|
| 7 | TABLE ACCESS FULL | T_STANDARD_FLOW | 2120K| 412M| | 22167 (2)| 00:04:27 | 1 |1048575|
| 8 | VIEW | | 1 | 411 | | 9 (0)| 00:00:01 | | |
|* 9 | FILTER | | | | | | | | |
|* 10 | TABLE ACCESS FULL | T_SYSTEM | 1 | 75 | | 3 (0)| 00:00:01 | | |
|* 11 | HASH JOIN | | 1 | 85 | | 6 (0)| 00:00:01 | | |
|* 12 | TABLE ACCESS FULL | T_PRODUCT | 1 | 48 | | 3 (0)| 00:00:01 | | |
| 13 | TABLE ACCESS FULL | T_PRODUCT_SUBJECT | 205 | 7585 | | 3 (0)| 00:00:01 | | |
--------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("SF"."CURRENCY"="TC"."CURRENCY"(+) AND "TC"."ORFLAG"(+)="SF"."ORFLAG" AND
"TC"."SYSTEM_CODE"(+)="SF"."SYSTEM_ID" AND "TC"."ENCODE"(+)="SF"."TRAN_CODE")
4 - access("EF"."ERROR_ID"="SF"."ID")
9 - filter( EXISTS (SELECT 0 FROM "T_PRODUCT" "P","T_PRODUCT_SUBJECT" "PS" WHERE
"PS"."PRODUCT_ID"="P"."ID" AND "P"."PRODUCT_ID"=:B1) AND ("SF"."AMT"<>0 OR "SF"."DISCOUNTAMT"<>0) AND
"SF"."STATE"='2')
10 - filter("S"."CODE"="SF"."SYSTEM_ID")
11 - access("PS"."PRODUCT_ID"="P"."ID")
12 - filter("P"."PRODUCT_ID"=:B1)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
9890560 consistent gets
78609 physical reads
0 redo size
387055582 bytes sent via SQL*Net to client
1174884 bytes received via SQL*Net from client
106762 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1601407 rows processed
墨值悬赏

评论
