SET LONG 1000000
SET LONGCHUNKSIZE 100000
SET LINESIZE 100
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('SYS_AUTO_SQL_TUNING_TASK') FROM DUAL;
DBMS_SQLTUNE.REPORT_TUNING_TAS
--------------------------------------------------------------------------------
GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name : SYS_AUTO_SQL_TUNING_TASK
Tuning Task Owner : SYS
Workload Type : Automatic High-Load SQL Workload
Execution Count : 30
Current Execution : EXEC_310869
Execution Type : TUNE SQL
Scope : COMPREHENSIVE
Global Time Limit(seconds) : 3600
Per-SQL Time Limit(seconds) : 1200
Completion Status : INTERRUPTED
Started at : 02/15/2017 22:00:08
Completed at : 02/15/2017 23:00:13
Number of Candidate SQLs : 204
Cumulative Elapsed Time of SQL (s) : 2060644
-------------------------------------------------------------------------------
Error: ORA-13639: 当前操作因超时而中断。
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
SUMMARY SECTION
-------------------------------------------------------------------------------
Global SQL Tuning Result Statistics
-------------------------------------------------------------------------------
Number of SQLs Analyzed : 168
Number of SQLs in the Report : 23
Number of SQLs with Findings : 23
Number of SQLs with Statistic Findings : 2
Number of SQLs with Alternative Plan Findings: 5
Number of SQLs with SQL profiles recommended : 17
Number of SQLs with Index Findings : 18
Number of SQLs with SQL Restructure Findings : 2
Number of SQLs with Timeouts : 2
-------------------------------------------------------------------------------
SQLs with Findings Ordered by Maximum (Profile/Index) Benefit, Object ID
-------------------------------------------------------------------------------
object ID SQL ID statistics profile(benefit) index(benefit) restructure
---------- ------------- ---------- ---------------- -------------- -----------
285327 bnpm5m42psm6z 99.97% 99.99%
285360 1qg7m1mmcgn0w 99.98% 99.99%
285363 9cfj31jf3twjq 99.96% 99.99%
285377 2vrnybzaudr22 99.99% 99.99%
285380 59dwcvp1mxqau 99.96% 99.99%
285381 8q4bvf04q4nau 99.98% 99.99%
285384 gxhzyr7dxnq2s 99.98% 99.99%
285386 2mmg9gujrjaw4 99.99% 99.99%
285394 cwuykgvjk0zn8 99.92% 99.99%
285401 afj3g84dj8hug 99.99% 99.99%
285361 f5cvrktvp7frz 99.96% 99.85%
285278 gq24u0zyq45mx 41.68% 99.79%
285397 2fb5gtqh0cbh1 99.72%
285325 7y5ggqh6j909w 99.70%
285373 148tyj9bzxzgk 99.70%
285378 37dx4sx5vk529 99.69% 1
285290 071wjj7t0qtpn 99.03%
285328 90tacxzfd05sm 1 99.00%
285301 9tfsc9v5fs4d7 96.27%
285342 9r7ta5r2dvfty 84.95%
285266 2jz5hasg203rw 28.81% 76.11% 1
285398 9un6spcxthjbw 68.67%
285351 39y4wqyrwtrm7 1
-------------------------------------------------------------------------------
Objects with Missing/Stale Statistics (ordered by schema, object, type)
-------------------------------------------------------------------------------
Schema Name Object Name Type State Cascade
---------------------------- ---------------------------- ----- ------- -------
JC800 MLDTEMP1 TABLE MISSING NO
MLDTEMP2 TABLE MISSING NO
-------------------------------------------------------------------------------
Tables with New Potential Indices (ordered by schema, number of times, table)
-------------------------------------------------------------------------------
Schema Name Table Name Index Name Nb Time
--------------------------- --------------------------- -------------- --------
JC800 APMACTUALSEQDATAITEM IDX$$_0001000D 11
JITMANPLANPAR IDX$$_0001000F 11
JITSHOPKBGATHER IDX$$_00010010 11
BDMWORKCENTERHEADER IDX$$_0001000E 10
BDMWORKCENTERHEADER IDX$$_00010001 2
APMACTUALSEQDATAITEM IDX$$_00010042 1
APMACTUALSEQDATAITEM IDX$$_00010002 1
BDMWORKCENTERHEADER IDX$$_00010043 1
JITACCSYKBTRUINFO IDX$$_00010003 1
PURDOCHEADER IDX$$_00010017 1
PURDOCHEADER IDX$$_00010005 1
PURDOCITEM IDX$$_00010006 1
SCMCOMPLETION IDX$$_0001002C 1
SCMSUPPLIERRESOURCE IDX$$_0001002D 1
REPDBNEW FT_GLD_DOCLINE_T IDX$$_00010004 1
FXA_ZJGC_TEMP10 IDX$$_00010014 1
FXA_ZJGC_TEMP14 IDX$$_00010016 1
FXA_ZJGC_TEMP3 IDX$$_00010013 1
-------------------------------------------------------------------------------
DETAILS SECTION
-------------------------------------------------------------------------------
Statements with Results Ordered by Maximum (Profile/Index) Benefit, Object ID
-------------------------------------------------------------------------------
Object ID : 285327
Schema Name: JC800
SQL ID : bnpm5m42psm6z
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-IP'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-14 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-14 23:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-14 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-14 23:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
由于 SQL profile 可能造成了显著的 I/O 时间缩短, 因此未自动创建它。
Recommendation (estimated benefit: 67.21%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285327, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 21.600848 17.279351 20 %
CPU Time (s): 21.58072 5.991089 72.23 %
User I/O Time (s): 0 10.872656
Buffer Gets: 2136722 700712 67.2 %
Physical Read Requests: 0 29305
Physical Write Requests: 0 0
Physical Read Bytes: 0 240066560
Physical Write Bytes: 0 0
Rows Processed: 401 401
Fetches: 401 401
Executions: 1 1
Recommendation (estimated benefit: 99.97%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285327, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.34%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 89.93%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001000D on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001000E on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001000F on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010010 on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 717
| 1 | SORT ORDER BY | | 717
| 2 | HASH UNIQUE | | 717
| 3 | NESTED LOOPS OUTER | | 717
| 4 | NESTED LOOPS OUTER | | 717
|* 5 | HASH JOIN OUTER | | 717
|* 6 | HASH JOIN | | 717
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 717
| 12 | NESTED LOOPS | | 1855
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3025
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
08:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 30
| 1 | SORT ORDER BY | | 30
| 2 | HASH UNIQUE | | 30
| 3 | NESTED LOOPS OUTER | | 30
|* 4 | HASH JOIN | | 30
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 717
|* 9 | HASH JOIN RIGHT OUTER | | 717
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 717
| 13 | NESTED LOOPS | | 1855
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3025
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 505K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 526K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
08:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 340534432
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 | 1
| 3 | SORT ORDER BY | | 1
| 4 | PX RECEIVE | | 1
| 5 | PX SEND RANGE | :TQ10000 | 1
| 6 | NESTED LOOPS OUTER | | 1
| 7 | NESTED LOOPS OUTER | | 1
| 8 | NESTED LOOPS OUTER | | 1
| 9 | NESTED LOOPS | | 1
| 10 | NESTED LOOPS | | 1
| 11 | NESTED LOOPS | | 3
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 3
|* 15 | INDEX RANGE SCAN | IDX$$_0001000D | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 18 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 19 | INDEX RANGE SCAN | IDX$$_0001000E |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 22 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 23 | INDEX RANGE SCAN | IDX$$_0001000F | 3
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 25 | INDEX RANGE SCAN | IDX$$_00010010 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-14 08:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-14 23:59:59')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
18 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
19 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
22 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP')
23 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 2989096975
--------------------------------------------------------------------------------
| Id | Operation | Name | Ro
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10004 |
| 3 | SORT ORDER BY | |
| 4 | HASH UNIQUE | |
| 5 | PX RECEIVE | |
| 6 | PX SEND RANGE | :TQ10003 |
| 7 | NESTED LOOPS OUTER | |
|* 8 | HASH JOIN | |
|* 9 | HASH JOIN OUTER | | 1
| 10 | PX RECEIVE | | 1
| 11 | PX SEND HASH | :TQ10000 | 1
| 12 | NESTED LOOPS OUTER | | 1
| 13 | NESTED LOOPS | | 1
| 14 | NESTED LOOPS | | 3
| 15 | PX BLOCK ITERATOR | |
|* 16 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER |
|* 17 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3
|* 18 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAHEADER |
|* 19 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
| 22 | PX RECEIVE | |
| 23 | PX SEND HASH | :TQ10001 |
| 24 | PX BLOCK ITERATOR | |
|* 25 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR |
| 26 | BUFFER SORT | |
| 27 | PX RECEIVE | |
| 28 | PX SEND BROADCAST | :TQ10002 |
| 29 | PX BLOCK ITERATOR | |
|* 30 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 31 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 32 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
8 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
9 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
16 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
17 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
19 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
25 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"(
30 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
31 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
32 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285360
Schema Name: JC800
SQL ID : 1qg7m1mmcgn0w
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-IP'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-13 20:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-14 23:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-13 20:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-14 23:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建, 因为自动创建功能已禁用。请将任务参数 ACCEPT_SQL_PROFILES 设置为 TRUE 以启用自动创建功能。
Recommendation (estimated benefit: 76.13%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285360, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: PARTIAL COMPLETE
Elapsed Time (s): 30.62509 1.220906 96.01 %
CPU Time (s): 30.497364 1.200818 96.06 %
User I/O Time (s): 0 .00891
Buffer Gets: 2937557 701608 76.11 %
Physical Read Requests: 0 28
Physical Write Requests: 0 0
Physical Read Bytes: 0 229376
Physical Write Bytes: 0 0
Rows Processed: 0 607
Fetches: 0 607
Executions: 0 1
Recommendation (estimated benefit: 99.98%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285360, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.34%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 89.59%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010018 on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010019 on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001001A on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001001B on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1230
| 1 | SORT ORDER BY | | 1230
| 2 | HASH UNIQUE | | 1230
| 3 | NESTED LOOPS OUTER | | 1230
| 4 | NESTED LOOPS OUTER | | 1230
|* 5 | HASH JOIN OUTER | | 1230
|* 6 | HASH JOIN | | 1230
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 512
| 12 | NESTED LOOPS | | 195
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 318
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 3
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
20:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1230
| 1 | SORT ORDER BY | | 1230
| 2 | HASH UNIQUE | | 1230
| 3 | NESTED LOOPS OUTER | | 1230
|* 4 | HASH JOIN | | 22
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 512
|* 9 | HASH JOIN RIGHT OUTER | | 512
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 512
| 13 | NESTED LOOPS | | 195
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 318
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 3
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 505K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 526K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 57
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
20:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 2487555936
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 | 1
| 3 | SORT ORDER BY | | 1
| 4 | PX RECEIVE | | 1
| 5 | PX SEND RANGE | :TQ10000 | 1
| 6 | NESTED LOOPS OUTER | | 1
| 7 | NESTED LOOPS | |
| 8 | NESTED LOOPS OUTER | |
| 9 | NESTED LOOPS OUTER | |
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | |
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM |
|* 15 | INDEX RANGE SCAN | IDX$$_00010018 | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
| 18 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 19 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 20 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 21 | INDEX RANGE SCAN | IDX$$_00010019 | 3
|* 22 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 23 | INDEX RANGE SCAN | IDX$$_0001001A |
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 5
|* 25 | INDEX RANGE SCAN | IDX$$_0001001B |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-13 20:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-14 23:59:59')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
19 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
20 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP')
21 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
22 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
23 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 558774612
--------------------------------------------------------------------------------
| Id | Operation | Name | R
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10004 |
| 3 | SORT ORDER BY | |
| 4 | HASH UNIQUE | |
| 5 | PX RECEIVE | |
| 6 | PX SEND RANGE | :TQ10003 |
| 7 | NESTED LOOPS OUTER | |
|* 8 | HASH JOIN | |
| 9 | NESTED LOOPS OUTER | |
|* 10 | HASH JOIN OUTER | |
| 11 | PX RECEIVE | |
| 12 | PX SEND HASH | :TQ10000 |
| 13 | NESTED LOOPS | |
| 14 | NESTED LOOPS | |
| 15 | NESTED LOOPS | |
| 16 | PX BLOCK ITERATOR | |
|* 17 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER |
|* 18 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T |
|* 19 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 20 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
| 21 | PX RECEIVE | |
| 22 | PX SEND HASH | :TQ10001 |
| 23 | PX BLOCK ITERATOR | |
|* 24 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR |
| 25 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 26 | INDEX UNIQUE SCAN | REMPLANTYP_U |
| 27 | BUFFER SORT | |
| 28 | PX RECEIVE | |
| 29 | PX SEND BROADCAST | :TQ10002 |
| 30 | PX BLOCK ITERATOR | |
|* 31 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 32 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 33 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
8 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
10 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND "APMACTUALS
17 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
18 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
19 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
20 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
24 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"(
26 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
31 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
32 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
33 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285363
Schema Name: JC800
SQL ID : 9cfj31jf3twjq
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-IP'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-13 00:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-13 23:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-13 00:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-13 23:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建, 因为自动创建功能已禁用。请将任务参数 ACCEPT_SQL_PROFILES 设置为 TRUE 以启用自动创建功能。
Recommendation (estimated benefit: 69.14%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285363, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 23.412212 1.388229 94.07 %
CPU Time (s): 23.384445 1.373792 94.12 %
User I/O Time (s): 0 .008707
Buffer Gets: 2269469 700840 69.11 %
Physical Read Requests: 0 24
Physical Write Requests: 0 0
Physical Read Bytes: 0 196608
Physical Write Bytes: 0 0
Rows Processed: 426 426
Fetches: 426 426
Executions: 1 1
Recommendation (estimated benefit: 99.96%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285363, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.34%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 89.63%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010020 on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010021 on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010022 on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010023 on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 410
| 1 | SORT ORDER BY | | 410
| 2 | HASH UNIQUE | | 410
| 3 | NESTED LOOPS OUTER | | 410
| 4 | NESTED LOOPS OUTER | | 410
|* 5 | HASH JOIN OUTER | | 410
|* 6 | HASH JOIN | | 410
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 410
| 12 | NESTED LOOPS | | 781
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 1274
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
00:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 410
| 1 | SORT ORDER BY | | 410
| 2 | HASH UNIQUE | | 410
| 3 | NESTED LOOPS OUTER | | 410
|* 4 | HASH JOIN | | 17
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 410
|* 9 | HASH JOIN RIGHT OUTER | | 410
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 410
| 13 | NESTED LOOPS | | 781
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 1274
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 505K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 526K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 24
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
00:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 4272201593
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 |
| 3 | SORT ORDER BY | |
| 4 | PX RECEIVE | |
| 5 | PX SEND RANGE | :TQ10000 |
| 6 | NESTED LOOPS OUTER | |
| 7 | NESTED LOOPS OUTER | |
| 8 | NESTED LOOPS OUTER | |
| 9 | NESTED LOOPS | |
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 1
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 1
|* 15 | INDEX RANGE SCAN | IDX$$_00010020 | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 18 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 19 | INDEX RANGE SCAN | IDX$$_00010021 |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 22 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 23 | INDEX RANGE SCAN | IDX$$_00010022 | 3
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 25 | INDEX RANGE SCAN | IDX$$_00010023 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-13 00:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-13 23:59:59')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
18 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
19 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
22 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP')
23 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 2989096975
--------------------------------------------------------------------------------
| Id | Operation | Name | Ro
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10004 |
| 3 | SORT ORDER BY | |
| 4 | HASH UNIQUE | |
| 5 | PX RECEIVE | |
| 6 | PX SEND RANGE | :TQ10003 |
| 7 | NESTED LOOPS OUTER | |
|* 8 | HASH JOIN | |
|* 9 | HASH JOIN OUTER | |
| 10 | PX RECEIVE | |
| 11 | PX SEND HASH | :TQ10000 |
| 12 | NESTED LOOPS OUTER | |
| 13 | NESTED LOOPS | |
| 14 | NESTED LOOPS | | 1
| 15 | PX BLOCK ITERATOR | |
|* 16 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER |
|* 17 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 1
|* 18 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAHEADER |
|* 19 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
| 22 | PX RECEIVE | |
| 23 | PX SEND HASH | :TQ10001 |
| 24 | PX BLOCK ITERATOR | |
|* 25 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR |
| 26 | BUFFER SORT | |
| 27 | PX RECEIVE | |
| 28 | PX SEND BROADCAST | :TQ10002 |
| 29 | PX BLOCK ITERATOR | |
|* 30 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 31 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 32 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
8 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
9 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
16 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
17 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
19 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
25 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"(
30 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
31 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
32 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285377
Schema Name: JC800
SQL ID : 2vrnybzaudr22
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-F'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-15 00:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 23:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-15 00:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 23:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建, 因为自动创建功能已禁用。请将任务参数 ACCEPT_SQL_PROFILES 设置为 TRUE 以启用自动创建功能。
Recommendation (estimated benefit: 70.52%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285377, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 24.122076 1.335963 94.46 %
CPU Time (s): 24.07034 1.307802 94.56 %
User I/O Time (s): 0 .01639
Buffer Gets: 2375583 700774 70.5 %
Physical Read Requests: 0 11
Physical Write Requests: 0 0
Physical Read Bytes: 0 90112
Physical Write Bytes: 0 0
Rows Processed: 453 453
Fetches: 453 453
Executions: 1 1
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285377, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.47%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 51.33%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010028 on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010029 on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001002A on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001002B on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1845
| 1 | SORT ORDER BY | | 1845
| 2 | HASH UNIQUE | | 1845
| 3 | NESTED LOOPS OUTER | | 1845
| 4 | NESTED LOOPS OUTER | | 1845
|* 5 | HASH JOIN OUTER | | 1845
|* 6 | HASH JOIN | | 1845
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 1845
| 12 | NESTED LOOPS | | 390
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 637
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 5
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
00:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1845
| 1 | SORT ORDER BY | | 1845
| 2 | HASH UNIQUE | | 1845
| 3 | NESTED LOOPS OUTER | | 1845
|* 4 | HASH JOIN | | 78
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 1845
|* 9 | HASH JOIN RIGHT OUTER | | 1845
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 1845
| 13 | NESTED LOOPS | | 390
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 637
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 5
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 637K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 664K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 24
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
00:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 1023399603
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 3
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 | 3
| 3 | SORT ORDER BY | | 3
| 4 | PX RECEIVE | | 3
| 5 | PX SEND RANGE | :TQ10000 | 3
| 6 | NESTED LOOPS OUTER | | 3
| 7 | NESTED LOOPS OUTER | | 3
| 8 | NESTED LOOPS OUTER | | 3
| 9 | NESTED LOOPS | | 3
| 10 | NESTED LOOPS | | 3
| 11 | NESTED LOOPS | |
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM |
|* 15 | INDEX RANGE SCAN | IDX$$_00010028 | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 18 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 19 | INDEX RANGE SCAN | IDX$$_00010029 |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 22 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 23 | INDEX RANGE SCAN | IDX$$_0001002A | 3
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 25 | INDEX RANGE SCAN | IDX$$_0001002B |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-15 00:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-15 23:59:59')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
18 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
19 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
22 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F')
23 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 936673233
--------------------------------------------------------------------------------
| Id | Operation | Name |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10006 |
| 3 | SORT ORDER BY | |
| 4 | HASH UNIQUE | |
| 5 | PX RECEIVE | |
| 6 | PX SEND RANGE | :TQ10005 |
| 7 | NESTED LOOPS OUTER | |
|* 8 | HASH JOIN | |
|* 9 | HASH JOIN OUTER | |
| 10 | PX RECEIVE | |
| 11 | PX SEND HASH | :TQ10002 |
|* 12 | HASH JOIN OUTER BUFFERED | |
| 13 | PX RECEIVE | |
| 14 | PX SEND HASH | :TQ10000 |
| 15 | NESTED LOOPS | |
| 16 | NESTED LOOPS | |
| 17 | NESTED LOOPS | |
| 18 | PX BLOCK ITERATOR | |
|* 19 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER |
|* 20 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T |
|* 21 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 22 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
| 23 | PX RECEIVE | |
| 24 | PX SEND HASH | :TQ10001 |
| 25 | PX BLOCK ITERATOR | |
|* 26 | TABLE ACCESS STORAGE FULL | REMPLANTYP |
| 27 | PX RECEIVE | |
| 28 | PX SEND HASH | :TQ10003 |
| 29 | PX BLOCK ITERATOR | |
|* 30 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR |
| 31 | BUFFER SORT | |
| 32 | PX RECEIVE | |
| 33 | PX SEND BROADCAST | :TQ10004 |
| 34 | PX BLOCK ITERATOR | |
|* 35 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 36 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 37 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
8 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
9 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND "APMACTUALS
12 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND "APMACTUALS
19 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
20 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
21 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
22 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
26 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
30 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(+
35 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
36 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
37 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285380
Schema Name: JC800
SQL ID : 59dwcvp1mxqau
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-F'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-14 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-14 16:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-14 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-14 16:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建, 因为经验证可获得的收益太少。
Recommendation (estimated benefit: 49.59%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285380, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 13.490854 1.078417 92 %
CPU Time (s): 13.476952 1.077836 92 %
User I/O Time (s): 0 0
Buffer Gets: 1387604 699943 49.55 %
Physical Read Requests: 0 0
Physical Write Requests: 0 0
Physical Read Bytes: 0 0
Physical Write Bytes: 0 0
Rows Processed: 264 264
Fetches: 264 264
Executions: 1 1
Recommendation (estimated benefit: 99.96%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285380, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.47%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 51.64%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001002E on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001002F on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010030 on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010031 on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 410
| 1 | SORT ORDER BY | | 410
| 2 | HASH UNIQUE | | 410
| 3 | NESTED LOOPS OUTER | | 410
| 4 | NESTED LOOPS OUTER | | 410
|* 5 | HASH JOIN OUTER | | 410
|* 6 | HASH JOIN | | 410
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 410
| 12 | NESTED LOOPS | | 1855
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3025
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
08:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
16:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 410
| 1 | SORT ORDER BY | | 410
| 2 | HASH UNIQUE | | 410
| 3 | NESTED LOOPS OUTER | | 410
|* 4 | HASH JOIN | | 17
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 410
|* 9 | HASH JOIN RIGHT OUTER | | 410
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 410
| 13 | NESTED LOOPS | | 1855
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3025
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 637K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 664K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 24
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
08:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
16:59:59' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 2247366639
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 | 1
| 3 | SORT ORDER BY | | 1
| 4 | PX RECEIVE | | 1
| 5 | PX SEND RANGE | :TQ10000 | 1
| 6 | NESTED LOOPS OUTER | | 1
| 7 | NESTED LOOPS OUTER | | 1
| 8 | NESTED LOOPS OUTER | | 1
| 9 | NESTED LOOPS | | 1
| 10 | NESTED LOOPS | | 1
| 11 | NESTED LOOPS | | 5
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 4
|* 15 | INDEX RANGE SCAN | IDX$$_0001002E | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 18 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 19 | INDEX RANGE SCAN | IDX$$_0001002F |
|* 20 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 21 | INDEX RANGE SCAN | IDX$$_00010030 | 3
| 22 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 23 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 25 | INDEX RANGE SCAN | IDX$$_00010031 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-14 08:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-14 16:59:59')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
18 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
19 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
20 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F')
21 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
23 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 2989096975
--------------------------------------------------------------------------------
| Id | Operation | Name | Ro
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10004 |
| 3 | SORT ORDER BY | |
| 4 | HASH UNIQUE | |
| 5 | PX RECEIVE | |
| 6 | PX SEND RANGE | :TQ10003 |
| 7 | NESTED LOOPS OUTER | |
|* 8 | HASH JOIN | |
|* 9 | HASH JOIN OUTER | |
| 10 | PX RECEIVE | |
| 11 | PX SEND HASH | :TQ10000 |
| 12 | NESTED LOOPS OUTER | |
| 13 | NESTED LOOPS | |
| 14 | NESTED LOOPS | | 3
| 15 | PX BLOCK ITERATOR | |
|* 16 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER |
|* 17 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3
|* 18 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAHEADER |
|* 19 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
| 22 | PX RECEIVE | |
| 23 | PX SEND HASH | :TQ10001 |
| 24 | PX BLOCK ITERATOR | |
|* 25 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR |
| 26 | BUFFER SORT | |
| 27 | PX RECEIVE | |
| 28 | PX SEND BROADCAST | :TQ10002 |
| 29 | PX BLOCK ITERATOR | |
|* 30 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 31 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 32 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
8 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
9 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
16 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
17 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
19 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
25 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(+
30 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
31 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
32 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285381
Schema Name: JC800
SQL ID : 8q4bvf04q4nau
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-F'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-14 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-14 23:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-14 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-14 23:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建, 因为自动创建功能已禁用。请将任务参数 ACCEPT_SQL_PROFILES 设置为 TRUE 以启用自动创建功能。
Recommendation (estimated benefit: 66.72%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285381, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 21.793969 1.391961 93.61 %
CPU Time (s): 21.757693 1.390789 93.6 %
User I/O Time (s): 0 0
Buffer Gets: 2103757 700545 66.7 %
Physical Read Requests: 0 0
Physical Write Requests: 0 0
Physical Read Bytes: 0 0
Physical Write Bytes: 0 0
Rows Processed: 401 401
Fetches: 401 401
Executions: 1 1
Recommendation (estimated benefit: 99.98%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285381, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.47%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 51.76%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010032 on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010033 on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010034 on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010035 on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 717
| 1 | SORT ORDER BY | | 717
| 2 | HASH UNIQUE | | 717
| 3 | NESTED LOOPS OUTER | | 717
| 4 | NESTED LOOPS OUTER | | 717
|* 5 | HASH JOIN OUTER | | 717
|* 6 | HASH JOIN | | 717
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 717
| 12 | NESTED LOOPS | | 1855
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3025
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
08:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 717
| 1 | SORT ORDER BY | | 717
| 2 | HASH UNIQUE | | 717
| 3 | NESTED LOOPS OUTER | | 717
|* 4 | HASH JOIN | | 30
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 717
|* 9 | HASH JOIN RIGHT OUTER | | 717
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 717
| 13 | NESTED LOOPS | | 1855
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3025
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 637K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 664K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 24
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
08:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 2684149737
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 | 1
| 3 | SORT ORDER BY | | 1
| 4 | PX RECEIVE | | 1
| 5 | PX SEND RANGE | :TQ10000 | 1
| 6 | NESTED LOOPS OUTER | | 1
| 7 | NESTED LOOPS OUTER | | 1
| 8 | NESTED LOOPS OUTER | | 1
| 9 | NESTED LOOPS | | 1
| 10 | NESTED LOOPS | | 1
| 11 | NESTED LOOPS | | 3
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 3
|* 15 | INDEX RANGE SCAN | IDX$$_00010032 | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 18 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 19 | INDEX RANGE SCAN | IDX$$_00010033 |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 22 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 23 | INDEX RANGE SCAN | IDX$$_00010034 | 3
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 25 | INDEX RANGE SCAN | IDX$$_00010035 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-14 08:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-14 23:59:59')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
18 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
19 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
22 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F')
23 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 2989096975
--------------------------------------------------------------------------------
| Id | Operation | Name | Ro
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10004 | 1
| 3 | SORT ORDER BY | | 1
| 4 | HASH UNIQUE | | 1
| 5 | PX RECEIVE | | 1
| 6 | PX SEND RANGE | :TQ10003 | 1
| 7 | NESTED LOOPS OUTER | | 1
|* 8 | HASH JOIN | |
|* 9 | HASH JOIN OUTER | | 1
| 10 | PX RECEIVE | | 1
| 11 | PX SEND HASH | :TQ10000 | 1
| 12 | NESTED LOOPS OUTER | | 1
| 13 | NESTED LOOPS | | 1
| 14 | NESTED LOOPS | | 3
| 15 | PX BLOCK ITERATOR | |
|* 16 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER |
|* 17 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3
|* 18 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAHEADER |
|* 19 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
| 22 | PX RECEIVE | |
| 23 | PX SEND HASH | :TQ10001 |
| 24 | PX BLOCK ITERATOR | |
|* 25 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR |
| 26 | BUFFER SORT | |
| 27 | PX RECEIVE | |
| 28 | PX SEND BROADCAST | :TQ10002 |
| 29 | PX BLOCK ITERATOR | |
|* 30 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 31 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 32 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
8 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
9 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
16 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
17 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
19 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
25 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(+
30 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
31 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
32 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285384
Schema Name: JC800
SQL ID : gxhzyr7dxnq2s
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-F'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-15 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 16:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-15 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 16:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建, 因为经验证可获得的收益太少。
Recommendation (estimated benefit: 49.02%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285384, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 15.089957 1.456678 90.34 %
CPU Time (s): 15.034715 1.44778 90.37 %
User I/O Time (s): 0 0
Buffer Gets: 1371915 699920 48.98 %
Physical Read Requests: 0 0
Physical Write Requests: 0 0
Physical Read Bytes: 0 0
Physical Write Bytes: 0 0
Rows Processed: 261 261
Fetches: 261 261
Executions: 1 1
Recommendation (estimated benefit: 99.98%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285384, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.48%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 50.86%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010036 on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010037 on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010038 on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010039 on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1025
| 1 | SORT ORDER BY | | 1025
| 2 | HASH UNIQUE | | 1025
| 3 | NESTED LOOPS OUTER | | 1025
| 4 | NESTED LOOPS OUTER | | 1025
|* 5 | HASH JOIN OUTER | | 1025
|* 6 | HASH JOIN | | 1025
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 256
| 12 | NESTED LOOPS | | 195
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 318
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
08:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
16:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1025
| 1 | SORT ORDER BY | | 1025
| 2 | HASH UNIQUE | | 1025
| 3 | NESTED LOOPS OUTER | | 1025
|* 4 | HASH JOIN | | 11
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 256
|* 9 | HASH JOIN RIGHT OUTER | | 256
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 256
| 13 | NESTED LOOPS | | 195
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 318
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 637K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 664K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 95
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
08:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
16:59:59' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 1339093041
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 | 4
| 3 | SORT ORDER BY | | 4
| 4 | PX RECEIVE | | 4
| 5 | PX SEND RANGE | :TQ10000 | 4
| 6 | NESTED LOOPS OUTER | | 4
| 7 | NESTED LOOPS | |
| 8 | NESTED LOOPS OUTER | | 1
| 9 | NESTED LOOPS OUTER | | 1
| 10 | NESTED LOOPS | | 1
| 11 | NESTED LOOPS | |
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM |
|* 15 | INDEX RANGE SCAN | IDX$$_00010036 | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
| 18 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 19 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 20 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 21 | INDEX RANGE SCAN | IDX$$_00010037 | 3
|* 22 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 23 | INDEX RANGE SCAN | IDX$$_00010038 |
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 9
|* 25 | INDEX RANGE SCAN | IDX$$_00010039 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-15 08:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-15 16:59:59')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
19 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
20 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F')
21 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
22 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
23 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 257567112
--------------------------------------------------------------------------------
| Id | Operation | Name
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | PX COORDINATOR |
| 2 | PX SEND QC (ORDER) | :TQ10005
| 3 | SORT ORDER BY |
| 4 | HASH UNIQUE |
| 5 | PX RECEIVE |
| 6 | PX SEND RANGE | :TQ10004
| 7 | BUFFER SORT |
| 8 | NESTED LOOPS OUTER |
|* 9 | HASH JOIN |
| 10 | PX RECEIVE |
| 11 | PX SEND HASH | :TQ10002
| 12 | BUFFER SORT |
| 13 | NESTED LOOPS OUTER |
|* 14 | HASH JOIN OUTER |
| 15 | PX RECEIVE |
| 16 | PX SEND HASH | :TQ10000
| 17 | NESTED LOOPS |
| 18 | NESTED LOOPS |
| 19 | NESTED LOOPS |
| 20 | PX BLOCK ITERATOR |
|* 21 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER
|* 22 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T
|* 23 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U
|* 24 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER
| 25 | PX RECEIVE |
| 26 | PX SEND HASH | :TQ10001
| 27 | PX BLOCK ITERATOR |
|* 28 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR
| 29 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP
|* 30 | INDEX UNIQUE SCAN | REMPLANTYP_U
| 31 | PX RECEIVE |
| 32 | PX SEND HASH | :TQ10003
| 33 | PX BLOCK ITERATOR |
|* 34 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER
|* 35 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER
|* 36 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
9 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
14 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND "APMACTUALS
21 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
22 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
23 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
24 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
28 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(+
30 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
34 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
35 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
36 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285386
Schema Name: JC800
SQL ID : 2mmg9gujrjaw4
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-IP'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-15 00:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 23:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-15 00:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 23:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建, 因为自动创建功能已禁用。请将任务参数 ACCEPT_SQL_PROFILES 设置为 TRUE 以启用自动创建功能。
Recommendation (estimated benefit: 71.16%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285386, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 25.30354 1.317776 94.79 %
CPU Time (s): 25.226165 1.305803 94.82 %
User I/O Time (s): 0 0
Buffer Gets: 2428742 700955 71.13 %
Physical Read Requests: 0 0
Physical Write Requests: 0 0
Physical Read Bytes: 0 0
Physical Write Bytes: 0 0
Rows Processed: 456 456
Fetches: 456 456
Executions: 1 1
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285386, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.34%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 89.94%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001003A on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001003B on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001003C on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001003D on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1845
| 1 | SORT ORDER BY | | 1845
| 2 | HASH UNIQUE | | 1845
| 3 | NESTED LOOPS OUTER | | 1845
| 4 | NESTED LOOPS OUTER | | 1845
|* 5 | HASH JOIN OUTER | | 1845
|* 6 | HASH JOIN | | 1845
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 1845
| 12 | NESTED LOOPS | | 390
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 637
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 5
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
00:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1845
| 1 | SORT ORDER BY | | 1845
| 2 | HASH UNIQUE | | 1845
| 3 | NESTED LOOPS OUTER | | 1845
|* 4 | HASH JOIN | | 78
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 1845
|* 9 | HASH JOIN RIGHT OUTER | | 1845
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 1845
| 13 | NESTED LOOPS | | 390
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 637
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 5
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 505K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 526K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 24
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
00:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 1141879068
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 | 2
| 3 | SORT ORDER BY | | 2
| 4 | PX RECEIVE | | 2
| 5 | PX SEND RANGE | :TQ10000 | 2
| 6 | NESTED LOOPS OUTER | | 2
| 7 | NESTED LOOPS OUTER | | 2
| 8 | NESTED LOOPS OUTER | | 2
| 9 | NESTED LOOPS | | 2
| 10 | NESTED LOOPS | | 3
| 11 | NESTED LOOPS | |
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM |
|* 15 | INDEX RANGE SCAN | IDX$$_0001003A | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 18 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 19 | INDEX RANGE SCAN | IDX$$_0001003B |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 22 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 23 | INDEX RANGE SCAN | IDX$$_0001003C | 3
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 25 | INDEX RANGE SCAN | IDX$$_0001003D |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-15 00:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-15 23:59:59')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
18 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
19 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
22 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP')
23 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 936673233
--------------------------------------------------------------------------------
| Id | Operation | Name |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10006 |
| 3 | SORT ORDER BY | |
| 4 | HASH UNIQUE | |
| 5 | PX RECEIVE | |
| 6 | PX SEND RANGE | :TQ10005 |
| 7 | NESTED LOOPS OUTER | |
|* 8 | HASH JOIN | |
|* 9 | HASH JOIN OUTER | |
| 10 | PX RECEIVE | |
| 11 | PX SEND HASH | :TQ10002 |
|* 12 | HASH JOIN OUTER BUFFERED | |
| 13 | PX RECEIVE | |
| 14 | PX SEND HASH | :TQ10000 |
| 15 | NESTED LOOPS | |
| 16 | NESTED LOOPS | |
| 17 | NESTED LOOPS | |
| 18 | PX BLOCK ITERATOR | |
|* 19 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER |
|* 20 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T |
|* 21 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 22 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
| 23 | PX RECEIVE | |
| 24 | PX SEND HASH | :TQ10001 |
| 25 | PX BLOCK ITERATOR | |
|* 26 | TABLE ACCESS STORAGE FULL | REMPLANTYP |
| 27 | PX RECEIVE | |
| 28 | PX SEND HASH | :TQ10003 |
| 29 | PX BLOCK ITERATOR | |
|* 30 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR |
| 31 | BUFFER SORT | |
| 32 | PX RECEIVE | |
| 33 | PX SEND BROADCAST | :TQ10004 |
| 34 | PX BLOCK ITERATOR | |
|* 35 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 36 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 37 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
8 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
9 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND "APMACTUALS
12 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND "APMACTUALS
19 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
20 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
21 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
22 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
26 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
30 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"(
35 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
36 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
37 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285394
Schema Name: JC800
SQL ID : cwuykgvjk0zn8
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-IP'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-13 12:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-13 23:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-13 12:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-13 23:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建, 因为经验证可获得的收益太少。
Recommendation (estimated benefit: 26.2%)
-----------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285394, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 10.938684 1.332688 87.81 %
CPU Time (s): 10.866348 1.326798 87.78 %
User I/O Time (s): 0 0
Buffer Gets: 947344 699724 26.13 %
Physical Read Requests: 0 0
Physical Write Requests: 0 0
Physical Read Bytes: 0 0
Physical Write Bytes: 0 0
Rows Processed: 177 177
Fetches: 177 177
Executions: 1 1
Recommendation (estimated benefit: 99.92%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285394, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.34%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 89.53%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001003E on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001003F on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010040 on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010041 on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 205
| 1 | SORT ORDER BY | | 205
| 2 | HASH UNIQUE | | 205
| 3 | NESTED LOOPS OUTER | | 205
| 4 | NESTED LOOPS OUTER | | 205
|* 5 | HASH JOIN OUTER | | 205
|* 6 | HASH JOIN | | 205
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 205
| 12 | NESTED LOOPS | | 781
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 1274
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
12:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 205
| 1 | SORT ORDER BY | | 205
| 2 | HASH UNIQUE | | 205
| 3 | NESTED LOOPS OUTER | | 205
|* 4 | HASH JOIN | | 9
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 205
|* 9 | HASH JOIN RIGHT OUTER | | 205
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 205
| 13 | NESTED LOOPS | | 781
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 1274
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 505K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 526K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 24
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
12:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 3142940409
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 |
| 3 | SORT ORDER BY | |
| 4 | PX RECEIVE | |
| 5 | PX SEND RANGE | :TQ10000 |
| 6 | NESTED LOOPS OUTER | |
| 7 | NESTED LOOPS | |
| 8 | NESTED LOOPS OUTER | |
| 9 | NESTED LOOPS OUTER | |
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 2
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 2
|* 15 | INDEX RANGE SCAN | IDX$$_0001003E | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
| 18 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 19 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 20 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 21 | INDEX RANGE SCAN | IDX$$_0001003F | 3
|* 22 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 23 | INDEX RANGE SCAN | IDX$$_00010040 |
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 2
|* 25 | INDEX RANGE SCAN | IDX$$_00010041 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-13 12:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-13 23:59:59')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
19 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
20 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP')
21 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
22 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
23 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 257567112
--------------------------------------------------------------------------------
| Id | Operation | Name
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | PX COORDINATOR |
| 2 | PX SEND QC (ORDER) | :TQ10005
| 3 | SORT ORDER BY |
| 4 | HASH UNIQUE |
| 5 | PX RECEIVE |
| 6 | PX SEND RANGE | :TQ10004
| 7 | BUFFER SORT |
| 8 | NESTED LOOPS OUTER |
|* 9 | HASH JOIN |
| 10 | PX RECEIVE |
| 11 | PX SEND HASH | :TQ10002
| 12 | BUFFER SORT |
| 13 | NESTED LOOPS OUTER |
|* 14 | HASH JOIN OUTER |
| 15 | PX RECEIVE |
| 16 | PX SEND HASH | :TQ10000
| 17 | NESTED LOOPS |
| 18 | NESTED LOOPS |
| 19 | NESTED LOOPS |
| 20 | PX BLOCK ITERATOR |
|* 21 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER
|* 22 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T
|* 23 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U
|* 24 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER
| 25 | PX RECEIVE |
| 26 | PX SEND HASH | :TQ10001
| 27 | PX BLOCK ITERATOR |
|* 28 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR
| 29 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP
|* 30 | INDEX UNIQUE SCAN | REMPLANTYP_U
| 31 | PX RECEIVE |
| 32 | PX SEND HASH | :TQ10003
| 33 | PX BLOCK ITERATOR |
|* 34 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER
|* 35 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER
|* 36 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
9 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
14 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND "APMACTUALS
21 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
22 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
23 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
24 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
28 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP' AND "JITMANPLAN2_"."CLIENT"(
30 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
34 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
35 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
36 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285401
Schema Name: JC800
SQL ID : afj3g84dj8hug
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-F'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-14 17:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 23:00:00'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-14 17:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 23:00:00' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建。
Recommendation (estimated benefit: 98.86%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285401, task_owner =>
'SYS', replace => TRUE);
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285401, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.47%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 51.34%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.99%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010044 on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010045 on JC800.BDMWORKCENTERHEADER("PLANT","OBJ
ECTID");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010046 on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010047 on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
ERRORS SECTION
-------------------------------------------------------------------------------
- 当前操作因超时而中断。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2152
| 1 | SORT ORDER BY | | 2152
| 2 | HASH UNIQUE | | 2152
| 3 | NESTED LOOPS OUTER | | 2152
| 4 | NESTED LOOPS OUTER | | 2152
|* 5 | HASH JOIN OUTER | | 2152
|* 6 | HASH JOIN | | 2152
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 2152
| 12 | NESTED LOOPS | | 390
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 637
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 6
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
17:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:00:00' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using SQL Profile
--------------------
Plan hash value: 411885422
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 91
| 1 | SORT ORDER BY | | 91
| 2 | HASH UNIQUE | | 91
| 3 | NESTED LOOPS OUTER | | 91
|* 4 | HASH JOIN | | 91
| 5 | INLIST ITERATOR | |
|* 6 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 7 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
|* 8 | HASH JOIN OUTER | | 2152
|* 9 | HASH JOIN RIGHT OUTER | | 2152
|* 10 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 11 | NESTED LOOPS | |
| 12 | NESTED LOOPS | | 2152
| 13 | NESTED LOOPS | | 390
|* 14 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 15 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 16 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 637
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 18 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 6
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 637K
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 664K
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
6 - filter("BDMWORKCEN4_"."PLANT"='001')
7 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
8 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
9 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
10 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
14 - filter("BDMWORKCEN5_"."PLANT"='001')
15 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
16 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
17:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:00:00' AND "APMACTUALS1_"."CLIENT"='800')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
18 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using New Indices
--------------------
Plan hash value: 1207041338
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 7
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 | 7
| 3 | SORT ORDER BY | | 7
| 4 | PX RECEIVE | | 7
| 5 | PX SEND RANGE | :TQ10000 | 7
| 6 | NESTED LOOPS OUTER | | 7
| 7 | NESTED LOOPS OUTER | | 7
| 8 | NESTED LOOPS OUTER | | 7
| 9 | NESTED LOOPS | | 7
| 10 | NESTED LOOPS | | 8
| 11 | NESTED LOOPS | | 1
| 12 | PX BLOCK ITERATOR | |
|* 13 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 14 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 1
|* 15 | INDEX RANGE SCAN | IDX$$_00010044 | 21
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 18 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 19 | INDEX RANGE SCAN | IDX$$_00010045 |
| 20 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 21 | INDEX UNIQUE SCAN | REMPLANTYP_U |
|* 22 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 23 | INDEX RANGE SCAN | IDX$$_00010046 | 3
|* 24 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 25 | INDEX RANGE SCAN | IDX$$_00010047 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
13 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
14 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
15 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-14 17:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-15 23:00:00')
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
18 - filter("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
19 - access("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
21 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
22 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F')
23 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
24 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
25 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND "JITMANPLAN
AND "JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
4- Using Parallel Execution
---------------------------
Plan hash value: 936673233
--------------------------------------------------------------------------------
| Id | Operation | Name |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10006 |
| 3 | SORT ORDER BY | |
| 4 | HASH UNIQUE | |
| 5 | PX RECEIVE | |
| 6 | PX SEND RANGE | :TQ10005 |
| 7 | NESTED LOOPS OUTER | |
|* 8 | HASH JOIN | |
|* 9 | HASH JOIN OUTER | |
| 10 | PX RECEIVE | |
| 11 | PX SEND HASH | :TQ10002 |
|* 12 | HASH JOIN OUTER BUFFERED | |
| 13 | PX RECEIVE | |
| 14 | PX SEND HASH | :TQ10000 |
| 15 | NESTED LOOPS | |
| 16 | NESTED LOOPS | |
| 17 | NESTED LOOPS | |
| 18 | PX BLOCK ITERATOR | |
|* 19 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER |
|* 20 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T |
|* 21 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
|* 22 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
| 23 | PX RECEIVE | |
| 24 | PX SEND HASH | :TQ10001 |
| 25 | PX BLOCK ITERATOR | |
|* 26 | TABLE ACCESS STORAGE FULL | REMPLANTYP |
| 27 | PX RECEIVE | |
| 28 | PX SEND HASH | :TQ10003 |
| 29 | PX BLOCK ITERATOR | |
|* 30 | TABLE ACCESS STORAGE FULL | JITMANPLANPAR |
| 31 | BUFFER SORT | |
| 32 | PX RECEIVE | |
| 33 | PX SEND BROADCAST | :TQ10004 |
| 34 | PX BLOCK ITERATOR | |
|* 35 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER |
|* 36 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 37 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
8 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND "APMACTUALS0_"
9 - access("APMACTUALS0_"."CLIENT"="JITMANPLAN2_"."CLIENT"(+) AND "APMACTUALS
12 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND "APMACTUALS
19 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
20 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
21 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
"APMACTUALS0_"."CLIENT"='800')
22 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
26 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
30 - storage("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(
filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-F' AND "JITMANPLAN2_"."CLIENT"(+
35 - storage(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCEN
filter(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
36 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
37 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
-------------------------------------------------------------------------------
Object ID : 285361
Schema Name: JC800
SQL ID : f5cvrktvp7frz
SQL Text : select distinct apmactuals0_.APMActualSeqDataHeaderID as
APMActua1_0_, jitmanplan2_.JITManPlanParID as JITManPl1_1_,
jitshopkbg3_.JITShopKBGatherID as JITShopK1_2_,
apmactuals0_.planLineDate as planLine2_0_,
apmactuals0_.periodNum as periodNum0_, apmactuals0_.styleID as
styleID0_, apmactuals0_.client as client0_,
apmactuals0_.bodyNumDesignation as bodyNumD6_0_,
apmactuals0_.CpMaterialNO as CpMateri7_0_,
apmactuals0_.notFullCarID as notFullC8_0_, apmactuals0_.speID as
speID0_, apmactuals0_.productType as product10_0_,
apmactuals0_.colour as colour0_, apmactuals0_.recoilCompleteID
as recoilC12_0_, apmactuals0_.fatherMateNO as fatherM13_0_,
apmactuals0_.productLine as product14_0_, apmactuals0_.planSeqNO
as planSeqNO0_, apmactuals0_.description as descrip16_0_,
apmactuals0_.keyID as keyID0_, apmactuals0_.OPENOUTID as
OPENOUTID0_, apmactuals0_.proportionFinger as proport19_0_,
apmactuals0_.frontFoglight as frontFo20_0_, apmactuals0_.crapID
as crapID0_, apmactuals0_.denoteNode as denoteNode0_,
apmactuals0_.actualLineTime as actualL23_0_,
apmactuals0_.proportionFingerNO as proport24_0_,
apmactuals0_.gatherQty as gatherQty0_,
apmactuals0_.fatherMateSeqNO as fatherM26_0_,
apmactuals0_.actualSeqNO as actualS27_0_,
apmactuals0_.assembleNumDesignation as assembl28_0_,
apmactuals0_.paintyDesignation as paintyD29_0_,
apmactuals0_.producteVersion as product30_0_, apmactuals0_.SFX
as SFX0_, apmactuals0_.nonceStatus as nonceSt32_0_,
apmactuals0_.factory as factory0_, apmactuals0_.batchNO as
batchNO0_, apmactuals0_.purOrgBlock as purOrgB35_0_,
apmactuals0_.actualLineDate as actualL36_0_,
apmactuals0_.yieldly as yieldly0_, jitmanplan2_.plant as
plant1_, jitmanplan2_.periodNO as periodNO1_,
jitmanplan2_.extNum as extNum1_, jitmanplan2_.strateBatchNO as
strateBa5_1_, jitmanplan2_.client as client1_,
jitmanplan2_.goBatNum as goBatNum1_, jitmanplan2_.createdBy as
createdBy1_, jitmanplan2_.productLine as productL9_1_,
jitmanplan2_.quotaGroup as quotaGroup1_, jitmanplan2_.strategy
as strategy1_, jitmanplan2_.proportionFinger as proport12_1_,
jitshopkbg3_.intArea as intArea2_, jitshopkbg3_.CLIENT as
CLIENT2_, jitshopkbg3_.remark as remark2_,
jitshopkbg3_.inceptKBID as inceptKBID2_, jitshopkbg3_.prtTimes
as prtTimes2_, jitshopkbg3_.auditPerson as auditPer7_2_,
jitshopkbg3_.CREATER as CREATER2_, jitshopkbg3_.extKBTyp as
extKBTyp2_, jitshopkbg3_.procBatchNO as procBat10_2_,
jitshopkbg3_.productExplain as product11_2_,
jitshopkbg3_.bargainPass as bargain12_2_,
jitshopkbg3_.externalPurStorage as externa13_2_,
jitshopkbg3_.inceptKBDate as inceptK14_2_, jitshopkbg3_.extNum
as extNum2_, jitshopkbg3_.gatherGoodsDocNo as gatherG16_2_,
jitshopkbg3_.goBatNum as goBatNum2_, jitshopkbg3_.salverID as
salverID2_, jitshopkbg3_.sendCostCen as sendCos19_2_,
jitshopkbg3_.goodsIssueTime as goodsIs20_2_,
jitshopkbg3_.getGdsSals as getGdsSals2_,
jitshopkbg3_.deliveryDate as deliver22_2_,
jitshopkbg3_.lastMimeographDate as lastMim23_2_,
jitshopkbg3_.HZNO as HZNO2_, jitshopkbg3_.recptDate as
recptDate2_, jitshopkbg3_.mimeographer as mimeogr26_2_,
jitshopkbg3_.intAreaChannel as intArea27_2_,
jitshopkbg3_.releasePerson as release28_2_, jitshopkbg3_.batNO
as batNO2_, jitshopkbg3_.runNum as runNum2_,
jitshopkbg3_.signPerson as signPerson2_, jitshopkbg3_.tipCheFile
as tipCheFile2_, jitshopkbg3_.handyHypoNum as handyHy33_2_,
jitshopkbg3_.sendSellStoreroom as sendSel34_2_,
jitshopkbg3_.autoKDId as autoKDId2_, jitshopkbg3_.getCostCen as
getCostCen2_, jitshopkbg3_.deliveryTime as deliver37_2_,
jitshopkbg3_.recorder as recorder2_, jitshopkbg3_.priOverID as
priOverID2_, jitshopkbg3_.victualer as victualer2_,
jitshopkbg3_.stopPlace as stopPlace2_, jitshopkbg3_.plant as
plant2_, jitshopkbg3_.Liftdate as Liftdate2_,
jitshopkbg3_.prodLine as prodLine2_, jitshopkbg3_.CREATETIME as
CREATETIME2_, jitshopkbg3_.consignee as consignee2_,
jitshopkbg3_.postDate as postDate2_, jitshopkbg3_.state as
state2_, jitshopkbg3_.customerNo as customerNo2_,
jitshopkbg3_.ordNO as ordNO2_, jitshopkbg3_.mimeographID as
mimeogr51_2_, jitshopkbg3_.exteriorTypes as exterio52_2_,
jitshopkbg3_.purposeKB as purposeKB2_, jitshopkbg3_.splitKBID as
splitKBID2_, jitshopkbg3_.issuePlant as issuePlant2_,
jitshopkbg3_.fitPro as fitPro2_, jitshopkbg3_.packSeqNum as
packSeqNum2_, jitshopkbg3_.strateBatchNO as strateB58_2_,
jitshopkbg3_.arrData as arrData2_, jitshopkbg3_.shopKBType as
shopKBType2_, jitshopkbg3_.strategy as strategy2_,
jitshopkbg3_.saleDisNum as saleDisNum2_, jitshopkbg3_.shopKBNO
as shopKBNO2_, jitshopkbg3_.materielGroup as materie64_2_,
jitshopkbg3_.updateDate as updateDate2_, jitshopkbg3_.balKBWay
as balKBWay2_, jitshopkbg3_.storageType as storage67_2_,
jitshopkbg3_.consigner as consigner2_,
jitshopkbg3_.consignerDesc as consign69_2_, jitshopkbg3_.exeDate
as exeDate2_, apmactuals0_.APMActualSeqDataHeaderID as x0_0_,
jitmanplan2_.JITManPlanParID as x1_0_,
jitshopkbg3_.JITShopKBGatherID as x2_0_, apmactuals1_.scanDate
as x3_0_, apmactuals1_.scanTime as x4_0_, apmactuals1_.scanPoint
as x5_0_, remplantyp6_.structureTypeNam as x6_0_ from
APMActualSeqDataHeader apmactuals0_, APMActualSeqDataItem
apmactuals1_, JITManPlanPar jitmanplan2_, JITShopKBGather
jitshopkbg3_, BDMWorkCenterHeader bdmworkcen4_,
BDMWorkCenterHeader bdmworkcen5_, REMPlanTyp remplantyp6_ where
(apmactuals0_.client='800' )and(apmactuals0_.factory='001'
)and(apmactuals0_.client=remplantyp6_.client(+))and(apmactuals0_.
productType=remplantyp6_.structureType(+))and(apmactuals0_.client
=apmactuals1_.client )and(apmactuals0_.client=jitmanplan2_.client
(+))and(jitmanplan2_.client=jitshopkbg3_.CLIENT(+))and(apmactuals
0_.factory=bdmworkcen4_.plant )and(apmactuals0_.factory=bdmworkce
n5_.plant )and(apmactuals0_.productLine=bdmworkcen4_.objectID
)and(bdmworkcen4_.workCenter in('2TTL001' ,
'1TTL001'))and(apmactuals0_.factory=bdmworkcen4_.plant
)and(apmactuals1_.scanPoint=bdmworkcen5_.objectID
)and(bdmworkcen5_.workCenter='2T09009'
)and(apmactuals0_.factory=bdmworkcen5_.plant
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.proportionFinger=jitmanplan2_.proportionFinger(
+))and(jitmanplan2_.strategy(+)='SPS-IP'
)and(jitmanplan2_.strateBatchNO=jitshopkbg3_.strateBatchNO(+))and
(jitmanplan2_.strategy=jitshopkbg3_.strategy(+))and(jitshopkbg3_.
shopKBType(+)='4' )and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null
)and(jitshopkbg3_.purposeKB(+)='01'
)and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-15 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 23:59:59'
))))and((((to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')>='2017-02-15 08:00:00'
)and(to_char(apmactuals1_.scanTime , 'yyyy-MM-dd
HH24:mi:ss')<='2017-02-15 23:59:59' )))) order by
apmactuals1_.scanDate desc , apmactuals1_.scanTime desc ,
jitshopkbg3_.salverID
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划。
Recommendation (estimated benefit: 99.96%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285361, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使原始计划上的响应时间缩短 99.96%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗 (预计为
88.89%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.85%)
------------------------------------------
- 考虑运行访问指导以改进物理方案设计或者创建推荐的索引。如果选择创建推荐的索引, 请考虑删除索引
"JC800"."BDMWORKCENTERHEADER_WKC", 因为它是推荐的索引的前缀。
create index JC800.IDX$$_0001001C on JC800.BDMWORKCENTERHEADER("WORKCENTER"
,"PLANT");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001001D on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANTIME",'yyyy-MM-dd HH24:mi:ss'));
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001001E on JC800.JITMANPLANPAR("CLIENT","PROPORTI
ONFINGER");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001001F on JC800.JITSHOPKBGATHER("CLIENT","STRATE
BATCHNO","STRATEGY");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 2265137696
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 17
| 1 | SORT ORDER BY | | 17
| 2 | HASH UNIQUE | | 17
| 3 | NESTED LOOPS OUTER | | 17
| 4 | NESTED LOOPS OUTER | | 17
|* 5 | HASH JOIN OUTER | | 17
|* 6 | HASH JOIN | | 17
| 7 | INLIST ITERATOR | |
|* 8 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1
|* 9 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 2
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 404
| 12 | NESTED LOOPS | | 404
|* 13 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 14 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 659
|* 16 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 17 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
|* 18 | TABLE ACCESS STORAGE FULL | REMPLANTYP | 598
| 19 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1
|* 20 | INDEX RANGE SCAN | JITMANPLANPAR_U | 1
|* 21 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1
|* 22 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."CLIENT"="REMPLANTYP6_"."CLIENT"(+) AND
"APMACTUALS0_"."PRODUCTTYPE"="REMPLANTYP6_"."STRUCTURETYPE"(+))
6 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
8 - filter("BDMWORKCEN4_"."PLANT"='001')
9 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
13 - filter("BDMWORKCEN5_"."PLANT"='001')
14 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009')
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
08:00:00' AND TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME")
23:59:59' AND "APMACTUALS1_"."CLIENT"='800')
16 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
18 - storage("REMPLANTYP6_"."CLIENT"(+)='800')
filter("REMPLANTYP6_"."CLIENT"(+)='800')
20 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
21 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
22 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
2- Using New Indices
--------------------
Plan hash value: 3092024913
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 |
| 1 | SORT ORDER BY | | 1 |
| 2 | NESTED LOOPS OUTER | | 1 |
| 3 | NESTED LOOPS OUTER | | 1 |
| 4 | NESTED LOOPS OUTER | | 1 |
|* 5 | HASH JOIN | | 1 |
| 6 | NESTED LOOPS | | |
| 7 | NESTED LOOPS | | 2 |
| 8 | NESTED LOOPS | | 2 |
| 9 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1 |
|* 10 | INDEX RANGE SCAN | IDX$$_0001001C | 1 |
|* 11 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 3 |
|* 12 | INDEX RANGE SCAN | IDX$$_0001001D | 214 |
|* 13 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1 |
|* 14 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1 |
| 15 | INLIST ITERATOR | | |
| 16 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1 |
|* 17 | INDEX RANGE SCAN | IDX$$_0001001C | 1 |
| 18 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP | 1 |
|* 19 | INDEX UNIQUE SCAN | REMPLANTYP_U | 1 |
|* 20 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR | 1 |
|* 21 | INDEX RANGE SCAN | IDX$$_0001001E | 33 |
|* 22 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER | 1 |
|* 23 | INDEX RANGE SCAN | IDX$$_0001001F | 1 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - access("APMACTUALS0_"."FACTORY"="BDMWORKCEN4_"."PLANT" AND
"APMACTUALS0_"."PRODUCTLINE"="BDMWORKCEN4_"."OBJECTID")
10 - access("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
11 - filter("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANPOINT"="BDMW
12 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5003">='2017-02-15 08:00:00' A
"APMACTUALSEQDATAITEM"."qsmmix_VCol_5003"<='2017-02-15 23:59:59')
13 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
14 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access(("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENT
"BDMWORKCEN4_"."PLANT"='001')
19 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
ETYPE"(+))
20 - filter("JITMANPLAN2_"."STRATEGY"(+)='SPS-IP')
21 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PROPORTIONFIN
PORTIONFINGER"(+))
22 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
23 - access("JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+) AND
"JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
3- Using Parallel Execution
---------------------------
Plan hash value: 3490606343
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | PX COORDINATOR | |
| 2 | PX SEND QC (ORDER) | :TQ10001 |
| 3 | SORT ORDER BY | |
| 4 | HASH UNIQUE | |
| 5 | PX RECEIVE | |
| 6 | PX SEND RANGE | :TQ10000 |
| 7 | NESTED LOOPS OUTER | |
| 8 | NESTED LOOPS OUTER | |
| 9 | NESTED LOOPS OUTER | |
| 10 | NESTED LOOPS | |
| 11 | NESTED LOOPS | | 2
| 12 | NESTED LOOPS | | 2
| 13 | PX BLOCK ITERATOR | |
|* 14 | TABLE ACCESS STORAGE FULL| BDMWORKCENTERHEADER |
|* 15 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 2
|* 16 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAHEADER |
|* 17 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
| 18 | INLIST ITERATOR | |
|* 19 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER |
|* 20 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC |
| 21 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 22 | INDEX UNIQUE SCAN | REMPLANTYP_U |
| 23 | TABLE ACCESS BY INDEX ROWID | JITMANPLANPAR |
|* 24 | INDEX RANGE SCAN | JITMANPLANPAR_U |
|* 25 | TABLE ACCESS BY INDEX ROWID | JITSHOPKBGATHER |
|* 26 | INDEX RANGE SCAN | JITSHOPKBGATHER_STRNO |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
14 - storage("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"=
filter("BDMWORKCEN5_"."WORKCENTER"='2T09009' AND "BDMWORKCEN5_"."PLANT"='
15 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN5_"."OBJECTID" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANTIME"),'yyyy-MM-dd H
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND "APM
AND "APMACTUALS0_"."CLIENT"='800')
19 - filter("BDMWORKCEN4_"."PLANT"='001' AND "APMACTUALS0_"."PRODUCTLINE"="BDM
20 - access("BDMWORKCEN4_"."WORKCENTER"='1TTL001' OR "BDMWORKCEN4_"."WORKCENTE
22 - access("REMPLANTYP6_"."CLIENT"(+)='800' AND "APMACTUALS0_"."PRODUCTTYPE"=
24 - access("JITMANPLAN2_"."CLIENT"(+)='800' AND "JITMANPLAN2_"."STRATEGY"(+)=
"APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
filter("APMACTUALS0_"."PROPORTIONFINGER"="JITMANPLAN2_"."PROPORTIONFINGER
25 - filter("JITSHOPKBG3_"."PURPOSEKB"(+)='01' AND "JITSHOPKBG3_"."SHOPKBTYPE"
"JITMANPLAN2_"."CLIENT"="JITSHOPKBG3_"."CLIENT"(+))
26 - access("JITMANPLAN2_"."STRATEBATCHNO"="JITSHOPKBG3_"."STRATEBATCHNO"(+) A
"JITMANPLAN2_"."STRATEGY"="JITSHOPKBG3_"."STRATEGY"(+))
-------------------------------------------------------------------------------
Object ID : 285278
Schema Name: JC800
SQL ID : gq24u0zyq45mx
SQL Text : MERGE INTO JITACCSYKBTRUINFO A USING ( SELECT KANBAN_CODE,
LINENO, MTL_CODE, SHIPQTY, '' CASE_CODE, ORDER_TYPE, DI_BATCHNO,
DI_UPDATETIME, DI_OPERTYPE, OWNER_CODE FROM
DI_T_KANBAN_LINES@HZ50 WHERE DI_BATCHNO > :B2 -20 AND DI_BATCHNO
<= :B1 ) B ON (A.LOOKNO = B.KANBAN_CODE AND A.LINENO = B.LINENO)
WHEN MATCHED THEN UPDATE SET A.MTLNO = B.MTL_CODE, A.SENDQTY =
B.SHIPQTY, A.CASENO = B.CASE_CODE, A.OUTSTORTYP = B.ORDER_TYPE,
A.SYNJOB = B.DI_BATCHNO, A.SYNDATE = B.DI_UPDATETIME, A.SYNTYP =
B.DI_OPERTYPE, A.VENDORNO=B.OWNER_CODE WHEN NOT MATCHED THEN
INSERT (JITACCSYKBTRUINFOID, LOOKNO, A.LINENO, MTLNO, SENDQTY,
CASENO, OUTSTORTYP, SYNJOB, SYNDATE, SYNTYP, CLIENT,VENDORNO)
VALUES (JITACCSYKBTRUINFO_S.NEXTVAL, KANBAN_CODE, B.LINENO,
MTL_CODE, SHIPQTY, CASE_CODE, ORDER_TYPE, DI_BATCHNO,
DI_UPDATETIME, DI_OPERTYPE, (SELECT CLIENT FROM ADCLIENT WHERE
ROWNUM < 2),B.OWNER_CODE)
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划。
SQL profile 未自动创建, 因为经验证可获得的收益太少。
Recommendation (estimated benefit: 41.68%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285278, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 1.022934 .815139 20.31 %
CPU Time (s): .006 .003499 41.68 %
User I/O Time (s): 0 0
Buffer Gets: 0 0
Physical Read Requests: 0 0
Physical Write Requests: 0 0
Physical Read Bytes: 0 0
Physical Write Bytes: 0 0
Rows Processed: 0 0
Fetches: 0 0
Executions: 1 1
Notes
-----
1. the original plan 的统计信息是 1 执行的平均值。
2. the SQL profile plan 的统计信息是 2 执行的平均值。
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.79%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010003 on JC800.JITACCSYKBTRUINFO(SYS_OP_C2C("LI
NENO"),SYS_OP_C2C("LOOKNO"));
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
ADDITIONAL INFORMATION SECTION
-------------------------------------------------------------------------------
- 优化程序不能合并位于执行计划的行 ID 4 处的视图。. 优化程序不能合并包含 NO_MERGE 提示的视图。.
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 1194574794
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | B
--------------------------------------------------------------------------------
| 0 | MERGE STATEMENT | | 45751 |
| 1 | MERGE | JITACCSYKBTRUINFO | |
|* 2 | COUNT STOPKEY | | |
| 3 | TABLE ACCESS STORAGE FULL FIRST ROWS| ADCLIENT | 1 |
| 4 | VIEW | | |
| 5 | SEQUENCE | JITACCSYKBTRUINFO_S | |
|* 6 | FILTER | | |
|* 7 | HASH JOIN OUTER | | 45751 |
| 8 | REMOTE | DI_T_KANBAN_LINES | 33 | 1
| 9 | TABLE ACCESS STORAGE FULL | JITACCSYKBTRUINFO | 13M|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(ROWNUM<2)
6 - filter(:B2-20<:B1)
7 - access("LINENO"=SYS_OP_C2C("A"."LINENO"(+)) AND "KANBAN_CODE"=SYS_OP_C2C(
Remote SQL Information (identified by operation id):
----------------------------------------------------
8 - SELECT /*+ ALL_ROWS FULL ("DI_T_KANBAN_LINES") */ "KANBAN_CODE","LINENO",
BATCHNO","DI_UPDATETIME","DI_OPERTYPE","OWNER_CODE" FROM "DI_T_KANBAN_LIN
"DI_BATCHNO"<=:1 AND "DI_BATCHNO">:2 (accessing 'HZ50' )
2- Using SQL Profile
--------------------
Plan hash value: 3303353975
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | B
--------------------------------------------------------------------------------
| 0 | MERGE STATEMENT | | 13864 |
| 1 | MERGE | JITACCSYKBTRUINFO | |
|* 2 | COUNT STOPKEY | | |
| 3 | TABLE ACCESS STORAGE FULL FIRST ROWS| ADCLIENT | 1 |
| 4 | VIEW | | |
| 5 | SEQUENCE | JITACCSYKBTRUINFO_S | |
|* 6 | HASH JOIN OUTER | | 13864 |
| 7 | REMOTE | DI_T_KANBAN_LINES | 10 |
| 8 | TABLE ACCESS STORAGE FULL | JITACCSYKBTRUINFO | 13M|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(ROWNUM<2)
6 - access("LINENO"=SYS_OP_C2C("A"."LINENO"(+)) AND "KANBAN_CODE"=SYS_OP_C2C(
Remote SQL Information (identified by operation id):
----------------------------------------------------
7 - SELECT /*+ */ "KANBAN_CODE","LINENO","MTL_CODE","SHIPQTY","ORDER_TYPE","D
IME","DI_OPERTYPE","OWNER_CODE" FROM "DI_T_KANBAN_LINES" "DI_T_KANBAN_LIN
AND "DI_BATCHNO"<=:2 (accessing 'HZ50' )
3- Using New Indices
--------------------
Plan hash value: 434387297
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | B
--------------------------------------------------------------------------------
| 0 | MERGE STATEMENT | | 13864 |
| 1 | MERGE | JITACCSYKBTRUINFO | |
|* 2 | COUNT STOPKEY | | |
| 3 | TABLE ACCESS STORAGE FULL FIRST ROWS| ADCLIENT | 1 |
| 4 | VIEW | | |
| 5 | SEQUENCE | JITACCSYKBTRUINFO_S | |
| 6 | NESTED LOOPS OUTER | | 13864 |
| 7 | REMOTE | DI_T_KANBAN_LINES | 10 |
| 8 | TABLE ACCESS BY INDEX ROWID | JITACCSYKBTRUINFO | 1386 |
|* 9 | INDEX RANGE SCAN | IDX$$_00010003 | 222 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(ROWNUM<2)
9 - access("LINENO"="JITACCSYKBTRUINFO"."qsmmix_VCol_5001"(+) AND
"KANBAN_CODE"="JITACCSYKBTRUINFO"."qsmmix_VCol_5002"(+))
Remote SQL Information (identified by operation id):
----------------------------------------------------
7 - SELECT /*+ */ "KANBAN_CODE","LINENO","MTL_CODE","SHIPQTY","ORDER_TYPE","D
IME","DI_OPERTYPE","OWNER_CODE" FROM "DI_T_KANBAN_LINES" "DI_T_KANBAN_LIN
AND "DI_BATCHNO"<=:2 (accessing 'HZ50' )
-------------------------------------------------------------------------------
Object ID : 285397
Schema Name: JC800
SQL ID : 2fb5gtqh0cbh1
SQL Text : select b.docno,b.fiscalyear,b.docLineNO from PIVInvRcpDocHeader
a,PIVIncomInvDocItem b where a.docno=b.docno and
A.FISCALYEAR=b.fiscalYear and a.invoiceDocStatus='A5'
and B.PURDOCNO is not null and not exists
(select 1 from purdochistory c where (c.transationType='2' or
c.transationType='3') and b.docno=c.docno and
b.docLineNO=c.docLineNO and b.FISCALYEAR=c.fiscalYear )
order by b.fiscalyear desc
-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
SQL profile 未自动创建。
Recommendation (estimated benefit: 16%)
---------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285397, task_owner =>
'SYS', replace => TRUE);
Recommendation (estimated benefit: 99.72%)
------------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285397, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使 SQL 概要文件计划上的响应时间缩短 99.68%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗
(预计为 6.95%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
-------------------------------------------------------------------------------
ERRORS SECTION
-------------------------------------------------------------------------------
- 当前操作因超时而中断。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 1781447092
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |Te
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 13M| 862M|
| 1 | SORT ORDER BY | | 13M| 862M|
|* 2 | HASH JOIN | | 13M| 862M|
|* 3 | TABLE ACCESS STORAGE FULL | PIVINVRCPDOCHEADER | 195K| 3060K|
|* 4 | HASH JOIN RIGHT ANTI | | 228K| 10M|
|* 5 | INDEX STORAGE FAST FULL SCAN| PURDOCHISTORY_U | 11M| 280M|
|* 6 | TABLE ACCESS STORAGE FULL | PIVINCOMINVDOCITEM | 22M| 522M|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("A"."DOCNO"="B"."DOCNO" AND "A"."FISCALYEAR"="B"."FISCALYEAR")
3 - storage("A"."INVOICEDOCSTATUS"='A5')
filter("A"."INVOICEDOCSTATUS"='A5')
4 - access("B"."DOCNO"="C"."DOCNO" AND "B"."DOCLINENO"="C"."DOCLINENO" AND
"B"."FISCALYEAR"="C"."FISCALYEAR")
5 - storage("C"."TRANSATIONTYPE"='2' OR "C"."TRANSATIONTYPE"='3')
filter("C"."TRANSATIONTYPE"='2' OR "C"."TRANSATIONTYPE"='3')
6 - storage("B"."PURDOCNO" IS NOT NULL)
filter("B"."PURDOCNO" IS NOT NULL)
2- Using SQL Profile
--------------------
Plan hash value: 2168866576
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |Tem
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2139K| 132M|
| 1 | SORT ORDER BY | | 2139K| 132M|
|* 2 | HASH JOIN RIGHT ANTI | | 2139K| 132M|
|* 3 | INDEX STORAGE FAST FULL SCAN| PURDOCHISTORY_U | 11M| 280M|
|* 4 | HASH JOIN | | 13M| 530M| 5
|* 5 | TABLE ACCESS STORAGE FULL | PIVINVRCPDOCHEADER | 195K| 3060K|
|* 6 | TABLE ACCESS STORAGE FULL | PIVINCOMINVDOCITEM | 22M| 522M|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("B"."DOCNO"="C"."DOCNO" AND "B"."DOCLINENO"="C"."DOCLINENO" AND
"B"."FISCALYEAR"="C"."FISCALYEAR")
3 - storage("C"."TRANSATIONTYPE"='2' OR "C"."TRANSATIONTYPE"='3')
filter("C"."TRANSATIONTYPE"='2' OR "C"."TRANSATIONTYPE"='3')
4 - access("A"."DOCNO"="B"."DOCNO" AND "A"."FISCALYEAR"="B"."FISCALYEAR")
5 - storage("A"."INVOICEDOCSTATUS"='A5')
filter("A"."INVOICEDOCSTATUS"='A5')
6 - storage("B"."PURDOCNO" IS NOT NULL)
filter("B"."PURDOCNO" IS NOT NULL)
3- Using Parallel Execution
---------------------------
Plan hash value: 3779033651
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | By
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2139K|
| 1 | PX COORDINATOR | | |
| 2 | PX SEND QC (ORDER) | :TQ10005 | 2139K|
| 3 | SORT ORDER BY | | 2139K|
| 4 | PX RECEIVE | | 2139K|
| 5 | PX SEND RANGE | :TQ10004 | 2139K|
|* 6 | HASH JOIN RIGHT ANTI BUFFERED | | 2139K|
| 7 | PX RECEIVE | | 11M|
| 8 | PX SEND HASH | :TQ10002 | 11M|
| 9 | PX BLOCK ITERATOR | | 11M|
|* 10 | INDEX STORAGE FAST FULL SCAN | PURDOCHISTORY_U | 11M|
| 11 | PX RECEIVE | | 13M|
| 12 | PX SEND HASH | :TQ10003 | 13M|
|* 13 | HASH JOIN BUFFERED | | 13M|
| 14 | JOIN FILTER CREATE | :BF0000 | 195K| 3
| 15 | PX RECEIVE | | 195K| 3
| 16 | PX SEND HASH | :TQ10000 | 195K| 3
| 17 | PX BLOCK ITERATOR | | 195K| 3
|* 18 | TABLE ACCESS STORAGE FULL| PIVINVRCPDOCHEADER | 195K| 3
| 19 | PX RECEIVE | | 22M|
| 20 | PX SEND HASH | :TQ10001 | 22M|
| 21 | JOIN FILTER USE | :BF0000 | 22M|
| 22 | PX BLOCK ITERATOR | | 22M|
|* 23 | TABLE ACCESS STORAGE FULL| PIVINCOMINVDOCITEM | 22M|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
6 - access("B"."DOCNO"="C"."DOCNO" AND "B"."DOCLINENO"="C"."DOCLINENO" AND "B
10 - storage("C"."TRANSATIONTYPE"='2' OR "C"."TRANSATIONTYPE"='3')
filter("C"."TRANSATIONTYPE"='2' OR "C"."TRANSATIONTYPE"='3')
13 - access("A"."DOCNO"="B"."DOCNO" AND "A"."FISCALYEAR"="B"."FISCALYEAR")
18 - storage("A"."INVOICEDOCSTATUS"='A5')
filter("A"."INVOICEDOCSTATUS"='A5')
23 - storage("B"."PURDOCNO" IS NOT NULL AND SYS_OP_BLOOM_FILTER(:BF0000,"B"."D
filter("B"."PURDOCNO" IS NOT NULL AND SYS_OP_BLOOM_FILTER(:BF0000,"B"."DO
-------------------------------------------------------------------------------
Object ID : 285325
Schema Name: JC800
SQL ID : 7y5ggqh6j909w
SQL Text : select sum(xiaxian) xiaxian,sum(quexian)
quexian,round(sum(quexian)/sum(xiaxian),2) dpu , sum(weizhitong)
weizhitong, round(1 - sum(weizhitong) /sum(xiaxian), 4) * 100
as zhitonglv, sum(louyu) louyu, round(1 -
sum(louyu)/sum(xiaxian), 4) * 100 as linyulv ,loc,carseriel,line
from( select z.testdate,z.xiaxian,z.quexian,round(z.quexian /
z.xiaxian,2) as dpu, z.weizhitong,round(1-z.weizhitong/z.xiaxian,
4)*100 as zhitonglv, z.louyu,round(1-z.louyu/z.xiaxian,4)*100 as
linyulv ,z.loc,z.carseriel,z.line from (select
a.testdate,a.xiaxian,b.quexian,decode(c.weizhitong,null,'0',c.wei
zhitong) as weizhitong,decode(d.louyushu,null,'0',d.louyushu) as
louyu,a.loc,a.carseriel,a.line from(select
a.loc,a.carseriel,a.line,a.workdate as testdate, count(*)
xiaxian from (SELECT qccc.plant PLANT, qccc.loc LOC, qccc.vin
VIN, qccc.straight STRAIGHT, qccc.workorder WORKORDER,
qccc.wrokteam WROKTEAM, a22.mindate MINDATE, ttttt.cartype
BULMOD, TO_CHAR(a22.mindate - CASE WHEN TO_CHAR (a22.mindate,
'hh24mi') < '0750' THEN 1 ELSE 0 END, 'yyyy-mm-dd' ) AS
workdate, a22.cartype carseriel, qccc.line FROM qmcheckcard qccc
LEFT JOIN (SELECT MIN (t222.inputdate) AS mindate, t222.vin,
t222.cartype FROM qmcheckcarddefect t222 where
nvl(conInvFlag,'N')!='Y' and cardTypes ='Z' GROUP BY t222.vin,
t222.cartype) a22 ON a22.vin = qccc.vin LEFT JOIN (SELECT
t222.cartype, t222.fathermateseqno FROM qmmesppinfo t222) ttttt
ON ttttt.fathermateseqno = qccc.vin ) a where a.plant='001'
and a.loc='P1' and a.workdate >='2017-02-15' and a.workdate
<='2017-02-15' and a.loc ='P1' and 'conInvFlag'='conInvFlag'
group by a.workdate ,a.loc,a.carseriel,a.line order by
a.workdate,a.loc,a.carseriel,a.line)a left join (select
a.workdate as testdate, count(*) as quexian ,a.loc,t.carType AS
carType,t.line from qmcheckcarddefect t inner join (SELECT
qccc.plant PLANT, qccc.loc LOC, qccc.vin VIN, qccc.straight
STRAIGHT, qccc.workorder WORKORDER, qccc.wrokteam WROKTEAM,
a22.mindate MINDATE, ttttt.cartype BULMOD, TO_CHAR(a22.mindate -
CASE WHEN TO_CHAR (a22.mindate, 'hh24mi') < '0750' THEN 1 ELSE 0
END, 'yyyy-mm-dd' ) AS workdate, a22.cartype carseriel,
qccc.line FROM qmcheckcard qccc LEFT JOIN (SELECT MIN
(t222.inputdate) AS mindate, t222.vin, t222.cartype FROM
qmcheckcarddefect t222 where nvl(conInvFlag,'N')!='Y' and
cardTypes ='Z' GROUP BY t222.vin, t222.cartype) a22 ON a22.vin =
qccc.vin LEFT JOIN (SELECT t222.cartype, t222.fathermateseqno
FROM qmmesppinfo t222) ttttt ON ttttt.fathermateseqno = qccc.vin
) a on a.plant='001' and a.loc='P1' and t.vin = a.vin and
nvl(t.carType,' ')=nvl(a.carseriel,' ') and nvl(t.line,'
')=nvl(a.line,' ') AND t.defectdesa IS not NULL and a.workdate
>='2017-02-15' and a.workdate <='2017-02-15' and a.loc ='P1' and
'conInvFlag'='conInvFlag' group by
a.workdate,a.loc,t.carType,t.line order by
a.workdate,a.loc,t.carType,t.line) b on a.testdate = b.testdate
and nvl(a.loc,' ')=nvl(b.loc,' ') and nvl(a.carseriel,'
')=nvl(b.carType,' ') and nvl(a.line,' ')=nvl(b.line,' ') left
join ( select a.workdate testdate,a.loc,a.carseriel,a.line,count(
*) weizhitong from (SELECT qccc.plant PLANT, qccc.loc LOC,
qccc.vin VIN, qccc.straight STRAIGHT, qccc.workorder WORKORDER,
qccc.wrokteam WROKTEAM, a22.mindate MINDATE, ttttt.cartype
BULMOD, TO_CHAR(a22.mindate - CASE WHEN TO_CHAR (a22.mindate,
'hh24mi') < '0750' THEN 1 ELSE 0 END, 'yyyy-mm-dd' ) AS
workdate, a22.cartype carseriel, qccc.line FROM qmcheckcard qccc
LEFT JOIN (SELECT MIN (t222.inputdate) AS mindate, t222.vin,
t222.cartype FROM qmcheckcarddefect t222 where
nvl(conInvFlag,'N')!='Y' and cardTypes ='Z' GROUP BY t222.vin,
t222.cartype) a22 ON a22.vin = qccc.vin LEFT JOIN (SELECT
t222.cartype, t222.fathermateseqno FROM qmmesppinfo t222) ttttt
ON ttttt.fathermateseqno = qccc.vin ) a where a.plant='001'
and a.loc='P1' and a.straight='1' and a.workdate >='2017-02-15'
and a.workdate <='2017-02-15' and a.loc ='P1' and
'conInvFlag'='conInvFlag' group by
a.workdate,a.loc,a.carseriel,a.line order by
a.workdate,a.loc,a.carseriel,a.line) c on a.testdate =
c.testdate and nvl(a.loc,' ')=nvl(c.loc,' ') and
nvl(a.carseriel,' ')=nvl(c.carseriel,' ') and nvl(a.line,'
')=nvl(c.line,' ') left join ( select a.workdate
testdate,a.loc,a.carseriel,a.line, count(distinct t.vin) as
louyushu from qmcheckcarddefect t inner join (SELECT
qccc.plant PLANT, qccc.loc LOC, qccc.vin VIN, qccc.straight
STRAIGHT, qccc.workorder WORKORDER, qccc.wrokteam WROKTEAM,
a22.mindate MINDATE, ttttt.cartype BULMOD, TO_CHAR(a22.mindate -
CASE WHEN TO_CHAR (a22.mindate, 'hh24mi') < '0750' THEN 1 ELSE 0
END, 'yyyy-mm-dd' ) AS workdate, a22.cartype carseriel,
qccc.line FROM qmcheckcard qccc LEFT JOIN (SELECT MIN
(t222.inputdate) AS mindate, t222.vin, t222.cartype FROM
qmcheckcarddefect t222 where nvl(conInvFlag,'N')!='Y' and
cardTypes ='Z' GROUP BY t222.vin, t222.cartype) a22 ON a22.vin =
qccc.vin LEFT JOIN (SELECT t222.cartype, t222.fathermateseqno
FROM qmmesppinfo t222) ttttt ON ttttt.fathermateseqno = qccc.vin
) a on a.plant='001' and a.loc='P1' and t.vin = a.vin where
t.defectdes = '漏雨' and a.workdate >='2017-02-15' and a.workdate
<='2017-02-15' and a.loc ='P1' and 'conInvFlag'='conInvFlag'
group by a.workdate,a.loc,a.carseriel,a.line order by
a.workdate,a.loc,a.carseriel,a.line) d on a.testdate =
d.testdate and nvl(a.loc,' ')=nvl(d.loc,' ') and
nvl(a.carseriel,' ')=nvl(d.carseriel,' ') and nvl(a.line,'
')=nvl(d.line,' ') ) z order by testdate,z.loc,z.carseriel,z.line
) group by loc,carseriel,line
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划。
Recommendation (estimated benefit: 99.7%)
-----------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285325, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使原始计划上的响应时间缩短 99.71%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗 (预计为
15.94%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Alternative Plan Finding
---------------------------
通过搜索系统的实时和历史性能数据找到了此语句的某些替代执行计划。
The following table lists these plans ranked by their average elapsed time.
See section "ALTERNATIVE PLANS SECTION" for detailed information on each
plan.
id plan hash last seen elapsed (s) origin note
-- ---------- -------------------- ------------ --------------- --------------
1 2000621611 2017-02-15/16:00:24 6.274 AWR original plan
2 2787380416 2017-02-15/14:21:05 7.429 Cursor Cache
Information
-----------
- 根据每次执行的用时, 原始计划可能具有最佳性能。但是, 如果您知道某个替代计划优于原始计划, 可以为该替代计划创建 SQL 计划基线。这将指示
Oracle 优化程序在将来优先于任何其他选择来选取它。
execute dbms_sqltune.create_sql_plan_baseline(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285325, owner_name =>
'SYS', plan_hash_value => xxxxxxxx);
-------------------------------------------------------------------------------
ADDITIONAL INFORMATION SECTION
-------------------------------------------------------------------------------
- 优化程序不能合并位于执行计划的行 ID 37 处的视图。. 仅当外部联接右侧的视图包含带单个 "WHERE" 子句的单个表时才能合并。.
- 优化程序不能合并位于执行计划的行 ID 27 处的视图。. 仅当外部联接右侧的视图包含带单个 "WHERE" 子句的单个表时才能合并。.
- 优化程序不能合并位于执行计划的行 ID 15 处的视图。. 仅当外部联接右侧的视图包含带单个 "WHERE" 子句的单个表时才能合并。.
- 优化程序不能合并位于执行计划的行 ID 5 处的视图。. 仅当外部联接右侧的视图包含带单个 "WHERE" 子句的单个表时才能合并。.
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 2000621611
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Byte
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 23 | 499
| 1 | HASH GROUP BY | | 23 | 499
|* 2 | HASH JOIN OUTER | | 23 | 499
|* 3 | HASH JOIN OUTER | | 23 | 356
|* 4 | HASH JOIN OUTER | | 23 | 213
| 5 | VIEW | | 23 | 71
| 6 | HASH GROUP BY | | 23 | 213
|* 7 | FILTER | | |
|* 8 | HASH JOIN RIGHT OUTER | | 550K| 4
| 9 | VIEW | | 546K| 1
| 10 | HASH GROUP BY | | 546K| 1
|* 11 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
|* 12 | HASH JOIN OUTER | | 534K| 3
|* 13 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 14 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 15 | VIEW | | 23 | 142
| 16 | HASH GROUP BY | | 23 | 358
|* 17 | HASH JOIN OUTER | | 57155 | 870
|* 18 | HASH JOIN | | 56711 | 692
|* 19 | FILTER | | |
|* 20 | HASH JOIN OUTER | | 546K| 4
|* 21 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 22 | VIEW | | 546K| 2
| 23 | HASH GROUP BY | | 546K| 1
|* 24 | TABLE ACCESS STORAGE FULL| QMCHECKCARDDEFECT | 546K| 1
|* 25 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 2414K| 9
| 26 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 27 | VIEW | | 23 | 142
| 28 | HASH GROUP BY | | 23 | 220
|* 29 | FILTER | | |
|* 30 | HASH JOIN OUTER | | 131K| 1
|* 31 | HASH JOIN OUTER | | 114K| 706
|* 32 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 114K| 356
| 33 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 34 | VIEW | | 546K| 1
| 35 | HASH GROUP BY | | 546K| 1
|* 36 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
| 37 | VIEW | | 23 | 142
| 38 | HASH GROUP BY | | 23 | 103
| 39 | VIEW | VM_NWVW_1 | 21881 | 96
| 40 | HASH GROUP BY | | 21881 | 256
|* 41 | FILTER | | |
|* 42 | HASH JOIN OUTER | | 21881 | 256
|* 43 | HASH JOIN OUTER | | 19141 | 162
|* 44 | HASH JOIN | | 18993 | 103
|* 45 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 18994 | 50
|* 46 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 47 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 48 | VIEW | | 546K| 1
| 49 | HASH GROUP BY | | 546K| 1
|* 50 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(NVL("A"."LINE",' ')=NVL("D"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("D"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("D"."LOC
"A"."TESTDATE"="D"."TESTDATE"(+))
3 - access(NVL("A"."LINE",' ')=NVL("C"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("C"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("C"."LOC
"A"."TESTDATE"="C"."TESTDATE"(+))
4 - access(NVL("A"."LINE",' ')=NVL("B"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("B"."CARTYPE"(+),' ') AND NVL("A"."LOC",' ')=NVL("B"."LOC"(
"A"."TESTDATE"="B"."TESTDATE"(+))
7 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
8 - access("A22"."VIN"(+)="QCCC"."VIN")
11 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
12 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
13 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
17 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
18 - access("T"."VIN"="QCCC"."VIN" AND NVL("T"."CARTYPE",' ')=NVL("A22"."CARTY
NVL("T"."LINE",' ')=NVL("QCCC"."LINE",' '))
19 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
20 - access("A22"."VIN"(+)="QCCC"."VIN")
21 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
24 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
25 - storage("T"."DEFECTDESA" IS NOT NULL)
filter("T"."DEFECTDESA" IS NOT NULL)
29 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
30 - access("A22"."VIN"(+)="QCCC"."VIN")
31 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
32 - storage("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='0
filter("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='00
36 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
41 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
42 - access("A22"."VIN"(+)="QCCC"."VIN")
43 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
44 - access("T"."VIN"="QCCC"."VIN")
45 - storage("T"."DEFECTDES"='漏雨')
filter("T"."DEFECTDES"='漏雨')
46 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
50 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
2- Using Parallel Execution
---------------------------
Plan hash value: 4191165024
--------------------------------------------------------------------------------
| Id | Operation | Name
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | PX COORDINATOR |
| 2 | PX SEND QC (RANDOM) | :TQ10034
| 3 | HASH GROUP BY |
| 4 | PX RECEIVE |
| 5 | PX SEND HASH | :TQ10033
| 6 | HASH GROUP BY |
|* 7 | HASH JOIN OUTER |
|* 8 | HASH JOIN OUTER |
|* 9 | HASH JOIN OUTER |
| 10 | PX RECEIVE |
| 11 | PX SEND HASH | :TQ10029
| 12 | VIEW |
| 13 | HASH GROUP BY |
| 14 | PX RECEIVE |
| 15 | PX SEND HASH | :TQ10025
| 16 | HASH GROUP BY |
|* 17 | FILTER |
|* 18 | HASH JOIN OUTER |
| 19 | PX RECEIVE |
| 20 | PX SEND HASH | :TQ10018
|* 21 | HASH JOIN OUTER BUFFERED |
| 22 | PX RECEIVE |
| 23 | PX SEND HASH | :TQ10008
| 24 | PX BLOCK ITERATOR |
|* 25 | TABLE ACCESS STORAGE FULL | QMCHECKCARD
| 26 | PX RECEIVE |
| 27 | PX SEND HASH | :TQ10009
| 28 | PX BLOCK ITERATOR |
| 29 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_
| 30 | PX RECEIVE |
| 31 | PX SEND HASH | :TQ10019
| 32 | VIEW |
| 33 | HASH GROUP BY |
| 34 | PX RECEIVE |
| 35 | PX SEND HASH | :TQ10010
| 36 | PX BLOCK ITERATOR |
|* 37 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
| 38 | PX RECEIVE |
| 39 | PX SEND HASH | :TQ10030
| 40 | VIEW |
| 41 | HASH GROUP BY |
| 42 | PX RECEIVE |
| 43 | PX SEND HASH | :TQ10026
| 44 | HASH GROUP BY |
|* 45 | HASH JOIN OUTER |
| 46 | PX RECEIVE |
| 47 | PX SEND HASH | :TQ10020
|* 48 | HASH JOIN BUFFERED |
| 49 | JOIN FILTER CREATE | :BF0000
| 50 | PX RECEIVE |
| 51 | PX SEND HASH | :TQ10011
|* 52 | FILTER |
|* 53 | HASH JOIN OUTER BUFFERED |
| 54 | PX RECEIVE |
| 55 | PX SEND HASH | :TQ10003
| 56 | PX BLOCK ITERATOR |
|* 57 | TABLE ACCESS STORAGE FULL | QMCHECKCARD
| 58 | PX RECEIVE |
| 59 | PX SEND HASH | :TQ10004
| 60 | VIEW |
| 61 | HASH GROUP BY |
| 62 | PX RECEIVE |
| 63 | PX SEND HASH | :TQ10000
| 64 | PX BLOCK ITERATOR |
|* 65 | TABLE ACCESS STORAGE FULL| QMCHECKCARDD
| 66 | PX RECEIVE |
| 67 | PX SEND HASH | :TQ10012
| 68 | JOIN FILTER USE | :BF0000
| 69 | PX BLOCK ITERATOR |
|* 70 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
| 71 | PX RECEIVE |
| 72 | PX SEND HASH | :TQ10021
| 73 | PX BLOCK ITERATOR |
| 74 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_
| 75 | PX RECEIVE |
| 76 | PX SEND HASH | :TQ10031
| 77 | VIEW |
| 78 | HASH GROUP BY |
| 79 | PX RECEIVE |
| 80 | PX SEND HASH | :TQ10027
| 81 | HASH GROUP BY |
|* 82 | FILTER |
|* 83 | HASH JOIN OUTER |
| 84 | PX RECEIVE |
| 85 | PX SEND HASH | :TQ10022
|* 86 | HASH JOIN OUTER BUFFERED |
| 87 | PX RECEIVE |
| 88 | PX SEND HASH | :TQ10013
| 89 | PX BLOCK ITERATOR |
|* 90 | TABLE ACCESS STORAGE FULL | QMCHECKCARD
| 91 | PX RECEIVE |
| 92 | PX SEND HASH | :TQ10014
| 93 | PX BLOCK ITERATOR |
| 94 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_
| 95 | PX RECEIVE |
| 96 | PX SEND HASH | :TQ10023
| 97 | VIEW |
| 98 | HASH GROUP BY |
| 99 | PX RECEIVE |
| 100 | PX SEND HASH | :TQ10015
| 101 | PX BLOCK ITERATOR |
|*102 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
| 103 | PX RECEIVE |
| 104 | PX SEND HASH | :TQ10032
| 105 | VIEW |
| 106 | HASH GROUP BY |
| 107 | PX RECEIVE |
| 108 | PX SEND HASH | :TQ10028
| 109 | HASH GROUP BY |
| 110 | VIEW | VM_NWVW_1
| 111 | HASH GROUP BY |
| 112 | PX RECEIVE |
| 113 | PX SEND HASH | :TQ10024
| 114 | HASH GROUP BY |
|*115 | FILTER |
|*116 | HASH JOIN OUTER |
| 117 | PX RECEIVE |
| 118 | PX SEND HASH | :TQ10016
|*119 | HASH JOIN OUTER BUFFERED |
| 120 | PX RECEIVE |
| 121 | PX SEND HASH | :TQ10005
|*122 | HASH JOIN BUFFERED |
| 123 | JOIN FILTER CREATE | :BF0001
| 124 | PX RECEIVE |
| 125 | PX SEND HASH | :TQ10001
| 126 | PX BLOCK ITERATOR |
|*127 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
| 128 | PX RECEIVE |
| 129 | PX SEND HASH | :TQ10002
| 130 | JOIN FILTER USE | :BF0001
| 131 | PX BLOCK ITERATOR |
|*132 | TABLE ACCESS STORAGE FULL | QMCHECKCARD
| 133 | PX RECEIVE |
| 134 | PX SEND HASH | :TQ10006
| 135 | PX BLOCK ITERATOR |
| 136 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_
| 137 | PX RECEIVE |
| 138 | PX SEND HASH | :TQ10017
| 139 | VIEW |
| 140 | HASH GROUP BY |
| 141 | PX RECEIVE |
| 142 | PX SEND HASH | :TQ10007
| 143 | PX BLOCK ITERATOR |
|*144 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
7 - access(NVL("A"."LINE",' ')=NVL("D"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
') AND "A"."TESTDATE"="D"."TESTDATE"(+))
8 - access(NVL("A"."LINE",' ')=NVL("C"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
') AND "A"."TESTDATE"="C"."TESTDATE"(+))
9 - access(NVL("A"."LINE",' ')=NVL("B"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
') AND "A"."TESTDATE"="B"."TESTDATE"(+))
17 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN (TO_CHAR(INT
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
ELSE 0 END ,'yyyy-mm-dd')<='2017-02-15')
18 - access("A22"."VIN"(+)="QCCC"."VIN")
21 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
25 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
37 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
45 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
48 - access("T"."VIN"="QCCC"."VIN" AND NVL("T"."CARTYPE",' ')=NVL("A22"."CARTY
52 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN (TO_CHAR(INT
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
ELSE 0 END ,'yyyy-mm-dd')<='2017-02-15')
53 - access("A22"."VIN"(+)="QCCC"."VIN")
57 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
65 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
70 - storage("T"."DEFECTDESA" IS NOT NULL)
filter("T"."DEFECTDESA" IS NOT NULL)
82 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN (TO_CHAR(INT
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
ELSE 0 END ,'yyyy-mm-dd')<='2017-02-15')
83 - access("A22"."VIN"(+)="QCCC"."VIN")
86 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
90 - storage("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='0
filter("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='00
102 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
115 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN (TO_CHAR(INT
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
ELSE 0 END ,'yyyy-mm-dd')<='2017-02-15')
116 - access("A22"."VIN"(+)="QCCC"."VIN")
119 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
122 - access("T"."VIN"="QCCC"."VIN")
127 - storage("T"."DEFECTDES"='漏雨')
filter("T"."DEFECTDES"='漏雨')
132 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001' AND SYS_OP_BLOOM_FILTE
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001' AND SYS_OP_BLOOM_FILTER
144 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
-------------------------------------------------------------------------------
ALTERNATIVE PLANS SECTION
-------------------------------------------------------------------------------
Plan 2
------
Plan Origin :Cursor Cache
Plan Hash Value :2787380416
Executions :25
Elapsed Time :7.429 sec
CPU Time :7.359 sec
Buffer Gets :492612
Disk Reads :25
Disk Writes :0
Notes:
1. Statistics shown are averaged over multiple executions.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Byte
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 23 | 499
| 1 | HASH GROUP BY | | 23 | 499
|* 2 | HASH JOIN OUTER | | 23 | 499
|* 3 | HASH JOIN OUTER | | 23 | 356
|* 4 | HASH JOIN OUTER | | 23 | 213
| 5 | VIEW | | 23 | 71
| 6 | HASH GROUP BY | | 23 | 213
|* 7 | FILTER | | |
|* 8 | HASH JOIN RIGHT OUTER | | 550K| 4
| 9 | VIEW | | 546K| 1
| 10 | HASH GROUP BY | | 546K| 1
|* 11 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
|* 12 | HASH JOIN OUTER | | 534K| 3
|* 13 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 14 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 15 | VIEW | | 23 | 142
| 16 | HASH GROUP BY | | 23 | 358
|* 17 | HASH JOIN OUTER | | 57155 | 870
|* 18 | HASH JOIN | | 56711 | 692
|* 19 | FILTER | | |
|* 20 | HASH JOIN RIGHT OUTER | | 546K| 4
| 21 | VIEW | | 546K| 2
| 22 | HASH GROUP BY | | 546K| 1
|* 23 | TABLE ACCESS STORAGE FULL| QMCHECKCARDDEFECT | 546K| 1
|* 24 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
|* 25 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 2414K| 9
| 26 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 27 | VIEW | | 23 | 142
| 28 | HASH GROUP BY | | 23 | 220
|* 29 | FILTER | | |
|* 30 | HASH JOIN OUTER | | 131K| 1
|* 31 | HASH JOIN OUTER | | 114K| 706
|* 32 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 114K| 356
| 33 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 34 | VIEW | | 546K| 1
| 35 | HASH GROUP BY | | 546K| 1
|* 36 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
| 37 | VIEW | | 23 | 142
| 38 | HASH GROUP BY | | 23 | 103
| 39 | VIEW | VM_NWVW_1 | 21881 | 96
| 40 | HASH GROUP BY | | 21881 | 256
|* 41 | HASH JOIN OUTER | | 21881 | 256
|* 42 | FILTER | | |
|* 43 | HASH JOIN OUTER | | 21711 | 188
|* 44 | HASH JOIN | | 18993 | 103
|* 45 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 18994 | 50
|* 46 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 47 | VIEW | | 546K| 1
| 48 | HASH GROUP BY | | 546K| 1
|* 49 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
| 50 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(NVL("A"."LINE",' ')=NVL("D"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("D"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("D"."LOC
"A"."TESTDATE"="D"."TESTDATE"(+))
3 - access(NVL("A"."LINE",' ')=NVL("C"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("C"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("C"."LOC
"A"."TESTDATE"="C"."TESTDATE"(+))
4 - access(NVL("A"."LINE",' ')=NVL("B"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("B"."CARTYPE"(+),' ') AND NVL("A"."LOC",' ')=NVL("B"."LOC"(
"A"."TESTDATE"="B"."TESTDATE"(+))
7 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
8 - access("A22"."VIN"(+)="QCCC"."VIN")
11 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
12 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
13 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
17 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
18 - access("T"."VIN"="QCCC"."VIN" AND NVL("T"."CARTYPE",' ')=NVL("A22"."CARTY
NVL("T"."LINE",' ')=NVL("QCCC"."LINE",' '))
19 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
20 - access("A22"."VIN"(+)="QCCC"."VIN")
23 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
24 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
25 - storage("T"."DEFECTDESA" IS NOT NULL)
filter("T"."DEFECTDESA" IS NOT NULL)
29 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
30 - access("A22"."VIN"(+)="QCCC"."VIN")
31 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
32 - storage("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='0
filter("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='00
36 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
41 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
42 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
43 - access("A22"."VIN"(+)="QCCC"."VIN")
44 - access("T"."VIN"="QCCC"."VIN")
45 - storage("T"."DEFECTDES"='漏雨')
filter("T"."DEFECTDES"='漏雨')
46 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
49 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
Plan 1
------
Plan Origin :AWR
Plan Hash Value :2000621611
Executions :6
Elapsed Time :6.274 sec
CPU Time :6.008 sec
Buffer Gets :493398
Disk Reads :211119
Disk Writes :0
Notes:
1. Statistics shown are averaged over multiple executions.
2. The plan matches the original plan.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Byte
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 23 | 499
| 1 | HASH GROUP BY | | 23 | 499
|* 2 | HASH JOIN OUTER | | 23 | 499
|* 3 | HASH JOIN OUTER | | 23 | 356
|* 4 | HASH JOIN OUTER | | 23 | 213
| 5 | VIEW | | 23 | 71
| 6 | HASH GROUP BY | | 23 | 213
|* 7 | FILTER | | |
|* 8 | HASH JOIN RIGHT OUTER | | 550K| 4
| 9 | VIEW | | 546K| 1
| 10 | HASH GROUP BY | | 546K| 1
|* 11 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
|* 12 | HASH JOIN OUTER | | 534K| 3
|* 13 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 14 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 15 | VIEW | | 23 | 142
| 16 | HASH GROUP BY | | 23 | 358
|* 17 | HASH JOIN OUTER | | 57155 | 870
|* 18 | HASH JOIN | | 56711 | 692
|* 19 | FILTER | | |
|* 20 | HASH JOIN OUTER | | 546K| 4
|* 21 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 22 | VIEW | | 546K| 2
| 23 | HASH GROUP BY | | 546K| 1
|* 24 | TABLE ACCESS STORAGE FULL| QMCHECKCARDDEFECT | 546K| 1
|* 25 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 2414K| 9
| 26 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 27 | VIEW | | 23 | 142
| 28 | HASH GROUP BY | | 23 | 220
|* 29 | FILTER | | |
|* 30 | HASH JOIN OUTER | | 131K| 1
|* 31 | HASH JOIN OUTER | | 114K| 706
|* 32 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 114K| 356
| 33 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 34 | VIEW | | 546K| 1
| 35 | HASH GROUP BY | | 546K| 1
|* 36 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
| 37 | VIEW | | 23 | 142
| 38 | HASH GROUP BY | | 23 | 103
| 39 | VIEW | VM_NWVW_1 | 21881 | 96
| 40 | HASH GROUP BY | | 21881 | 256
|* 41 | FILTER | | |
|* 42 | HASH JOIN OUTER | | 21881 | 256
|* 43 | HASH JOIN OUTER | | 19141 | 162
|* 44 | HASH JOIN | | 18993 | 103
|* 45 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 18994 | 50
|* 46 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 47 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 48 | VIEW | | 546K| 1
| 49 | HASH GROUP BY | | 546K| 1
|* 50 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(NVL("A"."LINE",' ')=NVL("D"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("D"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("D"."LOC
"A"."TESTDATE"="D"."TESTDATE"(+))
3 - access(NVL("A"."LINE",' ')=NVL("C"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("C"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("C"."LOC
"A"."TESTDATE"="C"."TESTDATE"(+))
4 - access(NVL("A"."LINE",' ')=NVL("B"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("B"."CARTYPE"(+),' ') AND NVL("A"."LOC",' ')=NVL("B"."LOC"(
"A"."TESTDATE"="B"."TESTDATE"(+))
7 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
8 - access("A22"."VIN"(+)="QCCC"."VIN")
11 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
12 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
13 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
17 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
18 - access("T"."VIN"="QCCC"."VIN" AND NVL("T"."CARTYPE",' ')=NVL("A22"."CARTY
NVL("T"."LINE",' ')=NVL("QCCC"."LINE",' '))
19 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
20 - access("A22"."VIN"(+)="QCCC"."VIN")
21 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
24 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
25 - storage("T"."DEFECTDESA" IS NOT NULL)
filter("T"."DEFECTDESA" IS NOT NULL)
29 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
30 - access("A22"."VIN"(+)="QCCC"."VIN")
31 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
32 - storage("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='0
filter("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='00
36 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
41 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-15' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
42 - access("A22"."VIN"(+)="QCCC"."VIN")
43 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
44 - access("T"."VIN"="QCCC"."VIN")
45 - storage("T"."DEFECTDES"='漏雨')
filter("T"."DEFECTDES"='漏雨')
46 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
50 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
-------------------------------------------------------------------------------
Object ID : 285373
Schema Name: JC800
SQL ID : 148tyj9bzxzgk
SQL Text : select sum(xiaxian) xiaxian,sum(quexian)
quexian,round(sum(quexian)/sum(xiaxian),2) dpu , sum(weizhitong)
weizhitong, round(1 - sum(weizhitong) /sum(xiaxian), 4) * 100
as zhitonglv, sum(louyu) louyu, round(1 -
sum(louyu)/sum(xiaxian), 4) * 100 as linyulv ,loc,carseriel,line
from( select z.testdate,z.xiaxian,z.quexian,round(z.quexian /
z.xiaxian,2) as dpu, z.weizhitong,round(1-z.weizhitong/z.xiaxian,
4)*100 as zhitonglv, z.louyu,round(1-z.louyu/z.xiaxian,4)*100 as
linyulv ,z.loc,z.carseriel,z.line from (select
a.testdate,a.xiaxian,b.quexian,decode(c.weizhitong,null,'0',c.wei
zhitong) as weizhitong,decode(d.louyushu,null,'0',d.louyushu) as
louyu,a.loc,a.carseriel,a.line from(select
a.loc,a.carseriel,a.line,a.workdate as testdate, count(*)
xiaxian from (SELECT qccc.plant PLANT, qccc.loc LOC, qccc.vin
VIN, qccc.straight STRAIGHT, qccc.workorder WORKORDER,
qccc.wrokteam WROKTEAM, a22.mindate MINDATE, ttttt.cartype
BULMOD, TO_CHAR(a22.mindate - CASE WHEN TO_CHAR (a22.mindate,
'hh24mi') < '0750' THEN 1 ELSE 0 END, 'yyyy-mm-dd' ) AS
workdate, a22.cartype carseriel, qccc.line FROM qmcheckcard qccc
LEFT JOIN (SELECT MIN (t222.inputdate) AS mindate, t222.vin,
t222.cartype FROM qmcheckcarddefect t222 where
nvl(conInvFlag,'N')!='Y' and cardTypes ='Z' GROUP BY t222.vin,
t222.cartype) a22 ON a22.vin = qccc.vin LEFT JOIN (SELECT
t222.cartype, t222.fathermateseqno FROM qmmesppinfo t222) ttttt
ON ttttt.fathermateseqno = qccc.vin ) a where a.plant='001'
and a.loc='P1' and a.workdate >='2017-02-14' and a.workdate
<='2017-02-15' and a.loc ='P1' and 'conInvFlag'='conInvFlag'
group by a.workdate ,a.loc,a.carseriel,a.line order by
a.workdate,a.loc,a.carseriel,a.line)a left join (select
a.workdate as testdate, count(*) as quexian ,a.loc,t.carType AS
carType,t.line from qmcheckcarddefect t inner join (SELECT
qccc.plant PLANT, qccc.loc LOC, qccc.vin VIN, qccc.straight
STRAIGHT, qccc.workorder WORKORDER, qccc.wrokteam WROKTEAM,
a22.mindate MINDATE, ttttt.cartype BULMOD, TO_CHAR(a22.mindate -
CASE WHEN TO_CHAR (a22.mindate, 'hh24mi') < '0750' THEN 1 ELSE 0
END, 'yyyy-mm-dd' ) AS workdate, a22.cartype carseriel,
qccc.line FROM qmcheckcard qccc LEFT JOIN (SELECT MIN
(t222.inputdate) AS mindate, t222.vin, t222.cartype FROM
qmcheckcarddefect t222 where nvl(conInvFlag,'N')!='Y' and
cardTypes ='Z' GROUP BY t222.vin, t222.cartype) a22 ON a22.vin =
qccc.vin LEFT JOIN (SELECT t222.cartype, t222.fathermateseqno
FROM qmmesppinfo t222) ttttt ON ttttt.fathermateseqno = qccc.vin
) a on a.plant='001' and a.loc='P1' and t.vin = a.vin and
nvl(t.carType,' ')=nvl(a.carseriel,' ') and nvl(t.line,'
')=nvl(a.line,' ') AND t.defectdesa IS not NULL and a.workdate
>='2017-02-14' and a.workdate <='2017-02-15' and a.loc ='P1' and
'conInvFlag'='conInvFlag' group by
a.workdate,a.loc,t.carType,t.line order by
a.workdate,a.loc,t.carType,t.line) b on a.testdate = b.testdate
and nvl(a.loc,' ')=nvl(b.loc,' ') and nvl(a.carseriel,'
')=nvl(b.carType,' ') and nvl(a.line,' ')=nvl(b.line,' ') left
join ( select a.workdate testdate,a.loc,a.carseriel,a.line,count(
*) weizhitong from (SELECT qccc.plant PLANT, qccc.loc LOC,
qccc.vin VIN, qccc.straight STRAIGHT, qccc.workorder WORKORDER,
qccc.wrokteam WROKTEAM, a22.mindate MINDATE, ttttt.cartype
BULMOD, TO_CHAR(a22.mindate - CASE WHEN TO_CHAR (a22.mindate,
'hh24mi') < '0750' THEN 1 ELSE 0 END, 'yyyy-mm-dd' ) AS
workdate, a22.cartype carseriel, qccc.line FROM qmcheckcard qccc
LEFT JOIN (SELECT MIN (t222.inputdate) AS mindate, t222.vin,
t222.cartype FROM qmcheckcarddefect t222 where
nvl(conInvFlag,'N')!='Y' and cardTypes ='Z' GROUP BY t222.vin,
t222.cartype) a22 ON a22.vin = qccc.vin LEFT JOIN (SELECT
t222.cartype, t222.fathermateseqno FROM qmmesppinfo t222) ttttt
ON ttttt.fathermateseqno = qccc.vin ) a where a.plant='001'
and a.loc='P1' and a.straight='1' and a.workdate >='2017-02-14'
and a.workdate <='2017-02-15' and a.loc ='P1' and
'conInvFlag'='conInvFlag' group by
a.workdate,a.loc,a.carseriel,a.line order by
a.workdate,a.loc,a.carseriel,a.line) c on a.testdate =
c.testdate and nvl(a.loc,' ')=nvl(c.loc,' ') and
nvl(a.carseriel,' ')=nvl(c.carseriel,' ') and nvl(a.line,'
')=nvl(c.line,' ') left join ( select a.workdate
testdate,a.loc,a.carseriel,a.line, count(distinct t.vin) as
louyushu from qmcheckcarddefect t inner join (SELECT
qccc.plant PLANT, qccc.loc LOC, qccc.vin VIN, qccc.straight
STRAIGHT, qccc.workorder WORKORDER, qccc.wrokteam WROKTEAM,
a22.mindate MINDATE, ttttt.cartype BULMOD, TO_CHAR(a22.mindate -
CASE WHEN TO_CHAR (a22.mindate, 'hh24mi') < '0750' THEN 1 ELSE 0
END, 'yyyy-mm-dd' ) AS workdate, a22.cartype carseriel,
qccc.line FROM qmcheckcard qccc LEFT JOIN (SELECT MIN
(t222.inputdate) AS mindate, t222.vin, t222.cartype FROM
qmcheckcarddefect t222 where nvl(conInvFlag,'N')!='Y' and
cardTypes ='Z' GROUP BY t222.vin, t222.cartype) a22 ON a22.vin =
qccc.vin LEFT JOIN (SELECT t222.cartype, t222.fathermateseqno
FROM qmmesppinfo t222) ttttt ON ttttt.fathermateseqno = qccc.vin
) a on a.plant='001' and a.loc='P1' and t.vin = a.vin where
t.defectdes = '漏雨' and a.workdate >='2017-02-14' and a.workdate
<='2017-02-15' and a.loc ='P1' and 'conInvFlag'='conInvFlag'
group by a.workdate,a.loc,a.carseriel,a.line order by
a.workdate,a.loc,a.carseriel,a.line) d on a.testdate =
d.testdate and nvl(a.loc,' ')=nvl(d.loc,' ') and
nvl(a.carseriel,' ')=nvl(d.carseriel,' ') and nvl(a.line,'
')=nvl(d.line,' ') ) z order by testdate,z.loc,z.carseriel,z.line
) group by loc,carseriel,line
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划。
Recommendation (estimated benefit: 99.7%)
-----------------------------------------
- 考虑接受建议的 SQL 概要文件, 以便对此语句使用并行执行。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285373, task_owner =>
'SYS', replace => TRUE, profile_type => DBMS_SQLTUNE.PX_PROFILE);
与 DOP 288 并行执行此查询会使原始计划上的响应时间缩短 99.71%。但是, 启用并行执行时要付出一些代价。它将增加语句的资源消耗 (预计为
15.94%), 这会导致系统吞吐量降低。此外, 由于在非常短的持续时间内消耗了这些资源, 因此如果没有足够可用的硬件容量,
并发语句的响应时间将受到负面影响。
The following data shows some sampled statistics for this SQL from the past
week and projected weekly values when parallel execution is enabled.
Past week sampled statistics for this SQL
-----------------------------------------
Number of executions 0
Percent of total activity 0
Percent of samples with #Active Sessions > 2*CPU 0
Weekly DB time (in sec) 0
Projected statistics with Parallel Execution
--------------------------------------------
Weekly DB time (in sec) 0
2- Alternative Plan Finding
---------------------------
通过搜索系统的实时和历史性能数据找到了此语句的某些替代执行计划。
The following table lists these plans ranked by their average elapsed time.
See section "ALTERNATIVE PLANS SECTION" for detailed information on each
plan.
id plan hash last seen elapsed (s) origin note
-- ---------- -------------------- ------------ --------------- --------------
1 2556778791 2017-02-15/02:00:44 3.788 AWR
2 2787380416 2017-02-15/02:00:44 3.792 AWR
3 2000621611 2017-02-15/01:14:22 7.833 Cursor Cache original plan
Recommendation
--------------
- 请考虑使用最佳平均用时为计划创建 SQL 计划基线。
execute dbms_sqltune.create_sql_plan_baseline(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285373, owner_name =>
'SYS', plan_hash_value => 2556778791);
-------------------------------------------------------------------------------
ADDITIONAL INFORMATION SECTION
-------------------------------------------------------------------------------
- 优化程序不能合并位于执行计划的行 ID 37 处的视图。. 仅当外部联接右侧的视图包含带单个 "WHERE" 子句的单个表时才能合并。.
- 优化程序不能合并位于执行计划的行 ID 27 处的视图。. 仅当外部联接右侧的视图包含带单个 "WHERE" 子句的单个表时才能合并。.
- 优化程序不能合并位于执行计划的行 ID 15 处的视图。. 仅当外部联接右侧的视图包含带单个 "WHERE" 子句的单个表时才能合并。.
- 优化程序不能合并位于执行计划的行 ID 5 处的视图。. 仅当外部联接右侧的视图包含带单个 "WHERE" 子句的单个表时才能合并。.
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 2000621611
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Byte
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 23 | 499
| 1 | HASH GROUP BY | | 23 | 499
|* 2 | HASH JOIN OUTER | | 23 | 499
|* 3 | HASH JOIN OUTER | | 23 | 356
|* 4 | HASH JOIN OUTER | | 23 | 213
| 5 | VIEW | | 23 | 71
| 6 | HASH GROUP BY | | 23 | 213
|* 7 | FILTER | | |
|* 8 | HASH JOIN RIGHT OUTER | | 550K| 4
| 9 | VIEW | | 546K| 1
| 10 | HASH GROUP BY | | 546K| 1
|* 11 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
|* 12 | HASH JOIN OUTER | | 534K| 3
|* 13 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 14 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 15 | VIEW | | 23 | 142
| 16 | HASH GROUP BY | | 23 | 358
|* 17 | HASH JOIN OUTER | | 57155 | 870
|* 18 | HASH JOIN | | 56711 | 692
|* 19 | FILTER | | |
|* 20 | HASH JOIN OUTER | | 546K| 4
|* 21 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 22 | VIEW | | 546K| 2
| 23 | HASH GROUP BY | | 546K| 1
|* 24 | TABLE ACCESS STORAGE FULL| QMCHECKCARDDEFECT | 546K| 1
|* 25 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 2414K| 9
| 26 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 27 | VIEW | | 23 | 142
| 28 | HASH GROUP BY | | 23 | 220
|* 29 | FILTER | | |
|* 30 | HASH JOIN OUTER | | 131K| 1
|* 31 | HASH JOIN OUTER | | 114K| 706
|* 32 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 114K| 356
| 33 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 34 | VIEW | | 546K| 1
| 35 | HASH GROUP BY | | 546K| 1
|* 36 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
| 37 | VIEW | | 23 | 142
| 38 | HASH GROUP BY | | 23 | 103
| 39 | VIEW | VM_NWVW_1 | 21881 | 96
| 40 | HASH GROUP BY | | 21881 | 256
|* 41 | FILTER | | |
|* 42 | HASH JOIN OUTER | | 21881 | 256
|* 43 | HASH JOIN OUTER | | 19141 | 162
|* 44 | HASH JOIN | | 18993 | 103
|* 45 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 18994 | 50
|* 46 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 47 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 48 | VIEW | | 546K| 1
| 49 | HASH GROUP BY | | 546K| 1
|* 50 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(NVL("A"."LINE",' ')=NVL("D"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("D"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("D"."LOC
"A"."TESTDATE"="D"."TESTDATE"(+))
3 - access(NVL("A"."LINE",' ')=NVL("C"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("C"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("C"."LOC
"A"."TESTDATE"="C"."TESTDATE"(+))
4 - access(NVL("A"."LINE",' ')=NVL("B"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("B"."CARTYPE"(+),' ') AND NVL("A"."LOC",' ')=NVL("B"."LOC"(
"A"."TESTDATE"="B"."TESTDATE"(+))
7 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
8 - access("A22"."VIN"(+)="QCCC"."VIN")
11 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
12 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
13 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
17 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
18 - access("T"."VIN"="QCCC"."VIN" AND NVL("T"."CARTYPE",' ')=NVL("A22"."CARTY
NVL("T"."LINE",' ')=NVL("QCCC"."LINE",' '))
19 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
20 - access("A22"."VIN"(+)="QCCC"."VIN")
21 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
24 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
25 - storage("T"."DEFECTDESA" IS NOT NULL)
filter("T"."DEFECTDESA" IS NOT NULL)
29 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
30 - access("A22"."VIN"(+)="QCCC"."VIN")
31 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
32 - storage("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='0
filter("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='00
36 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
41 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
42 - access("A22"."VIN"(+)="QCCC"."VIN")
43 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
44 - access("T"."VIN"="QCCC"."VIN")
45 - storage("T"."DEFECTDES"='漏雨')
filter("T"."DEFECTDES"='漏雨')
46 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
50 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
2- Using Parallel Execution
---------------------------
Plan hash value: 4191165024
--------------------------------------------------------------------------------
| Id | Operation | Name
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | PX COORDINATOR |
| 2 | PX SEND QC (RANDOM) | :TQ10034
| 3 | HASH GROUP BY |
| 4 | PX RECEIVE |
| 5 | PX SEND HASH | :TQ10033
| 6 | HASH GROUP BY |
|* 7 | HASH JOIN OUTER |
|* 8 | HASH JOIN OUTER |
|* 9 | HASH JOIN OUTER |
| 10 | PX RECEIVE |
| 11 | PX SEND HASH | :TQ10029
| 12 | VIEW |
| 13 | HASH GROUP BY |
| 14 | PX RECEIVE |
| 15 | PX SEND HASH | :TQ10025
| 16 | HASH GROUP BY |
|* 17 | FILTER |
|* 18 | HASH JOIN OUTER |
| 19 | PX RECEIVE |
| 20 | PX SEND HASH | :TQ10018
|* 21 | HASH JOIN OUTER BUFFERED |
| 22 | PX RECEIVE |
| 23 | PX SEND HASH | :TQ10008
| 24 | PX BLOCK ITERATOR |
|* 25 | TABLE ACCESS STORAGE FULL | QMCHECKCARD
| 26 | PX RECEIVE |
| 27 | PX SEND HASH | :TQ10009
| 28 | PX BLOCK ITERATOR |
| 29 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_
| 30 | PX RECEIVE |
| 31 | PX SEND HASH | :TQ10019
| 32 | VIEW |
| 33 | HASH GROUP BY |
| 34 | PX RECEIVE |
| 35 | PX SEND HASH | :TQ10010
| 36 | PX BLOCK ITERATOR |
|* 37 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
| 38 | PX RECEIVE |
| 39 | PX SEND HASH | :TQ10030
| 40 | VIEW |
| 41 | HASH GROUP BY |
| 42 | PX RECEIVE |
| 43 | PX SEND HASH | :TQ10026
| 44 | HASH GROUP BY |
|* 45 | HASH JOIN OUTER |
| 46 | PX RECEIVE |
| 47 | PX SEND HASH | :TQ10020
|* 48 | HASH JOIN BUFFERED |
| 49 | JOIN FILTER CREATE | :BF0000
| 50 | PX RECEIVE |
| 51 | PX SEND HASH | :TQ10011
|* 52 | FILTER |
|* 53 | HASH JOIN OUTER BUFFERED |
| 54 | PX RECEIVE |
| 55 | PX SEND HASH | :TQ10003
| 56 | PX BLOCK ITERATOR |
|* 57 | TABLE ACCESS STORAGE FULL | QMCHECKCARD
| 58 | PX RECEIVE |
| 59 | PX SEND HASH | :TQ10004
| 60 | VIEW |
| 61 | HASH GROUP BY |
| 62 | PX RECEIVE |
| 63 | PX SEND HASH | :TQ10000
| 64 | PX BLOCK ITERATOR |
|* 65 | TABLE ACCESS STORAGE FULL| QMCHECKCARDD
| 66 | PX RECEIVE |
| 67 | PX SEND HASH | :TQ10012
| 68 | JOIN FILTER USE | :BF0000
| 69 | PX BLOCK ITERATOR |
|* 70 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
| 71 | PX RECEIVE |
| 72 | PX SEND HASH | :TQ10021
| 73 | PX BLOCK ITERATOR |
| 74 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_
| 75 | PX RECEIVE |
| 76 | PX SEND HASH | :TQ10031
| 77 | VIEW |
| 78 | HASH GROUP BY |
| 79 | PX RECEIVE |
| 80 | PX SEND HASH | :TQ10027
| 81 | HASH GROUP BY |
|* 82 | FILTER |
|* 83 | HASH JOIN OUTER |
| 84 | PX RECEIVE |
| 85 | PX SEND HASH | :TQ10022
|* 86 | HASH JOIN OUTER BUFFERED |
| 87 | PX RECEIVE |
| 88 | PX SEND HASH | :TQ10013
| 89 | PX BLOCK ITERATOR |
|* 90 | TABLE ACCESS STORAGE FULL | QMCHECKCARD
| 91 | PX RECEIVE |
| 92 | PX SEND HASH | :TQ10014
| 93 | PX BLOCK ITERATOR |
| 94 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_
| 95 | PX RECEIVE |
| 96 | PX SEND HASH | :TQ10023
| 97 | VIEW |
| 98 | HASH GROUP BY |
| 99 | PX RECEIVE |
| 100 | PX SEND HASH | :TQ10015
| 101 | PX BLOCK ITERATOR |
|*102 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
| 103 | PX RECEIVE |
| 104 | PX SEND HASH | :TQ10032
| 105 | VIEW |
| 106 | HASH GROUP BY |
| 107 | PX RECEIVE |
| 108 | PX SEND HASH | :TQ10028
| 109 | HASH GROUP BY |
| 110 | VIEW | VM_NWVW_1
| 111 | HASH GROUP BY |
| 112 | PX RECEIVE |
| 113 | PX SEND HASH | :TQ10024
| 114 | HASH GROUP BY |
|*115 | FILTER |
|*116 | HASH JOIN OUTER |
| 117 | PX RECEIVE |
| 118 | PX SEND HASH | :TQ10016
|*119 | HASH JOIN OUTER BUFFERED |
| 120 | PX RECEIVE |
| 121 | PX SEND HASH | :TQ10005
|*122 | HASH JOIN BUFFERED |
| 123 | JOIN FILTER CREATE | :BF0001
| 124 | PX RECEIVE |
| 125 | PX SEND HASH | :TQ10001
| 126 | PX BLOCK ITERATOR |
|*127 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
| 128 | PX RECEIVE |
| 129 | PX SEND HASH | :TQ10002
| 130 | JOIN FILTER USE | :BF0001
| 131 | PX BLOCK ITERATOR |
|*132 | TABLE ACCESS STORAGE FULL | QMCHECKCARD
| 133 | PX RECEIVE |
| 134 | PX SEND HASH | :TQ10006
| 135 | PX BLOCK ITERATOR |
| 136 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_
| 137 | PX RECEIVE |
| 138 | PX SEND HASH | :TQ10017
| 139 | VIEW |
| 140 | HASH GROUP BY |
| 141 | PX RECEIVE |
| 142 | PX SEND HASH | :TQ10007
| 143 | PX BLOCK ITERATOR |
|*144 | TABLE ACCESS STORAGE FULL | QMCHECKCARDD
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
7 - access(NVL("A"."LINE",' ')=NVL("D"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
') AND "A"."TESTDATE"="D"."TESTDATE"(+))
8 - access(NVL("A"."LINE",' ')=NVL("C"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
') AND "A"."TESTDATE"="C"."TESTDATE"(+))
9 - access(NVL("A"."LINE",' ')=NVL("B"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
') AND "A"."TESTDATE"="B"."TESTDATE"(+))
17 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN (TO_CHAR(INT
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
ELSE 0 END ,'yyyy-mm-dd')<='2017-02-15')
18 - access("A22"."VIN"(+)="QCCC"."VIN")
21 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
25 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
37 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
45 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
48 - access("T"."VIN"="QCCC"."VIN" AND NVL("T"."CARTYPE",' ')=NVL("A22"."CARTY
52 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN (TO_CHAR(INT
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
ELSE 0 END ,'yyyy-mm-dd')<='2017-02-15')
53 - access("A22"."VIN"(+)="QCCC"."VIN")
57 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
65 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
70 - storage("T"."DEFECTDESA" IS NOT NULL)
filter("T"."DEFECTDESA" IS NOT NULL)
82 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN (TO_CHAR(INT
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
ELSE 0 END ,'yyyy-mm-dd')<='2017-02-15')
83 - access("A22"."VIN"(+)="QCCC"."VIN")
86 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
90 - storage("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='0
filter("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='00
102 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
115 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN (TO_CHAR(INT
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
ELSE 0 END ,'yyyy-mm-dd')<='2017-02-15')
116 - access("A22"."VIN"(+)="QCCC"."VIN")
119 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
122 - access("T"."VIN"="QCCC"."VIN")
127 - storage("T"."DEFECTDES"='漏雨')
filter("T"."DEFECTDES"='漏雨')
132 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001' AND SYS_OP_BLOOM_FILTE
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001' AND SYS_OP_BLOOM_FILTER
144 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
-------------------------------------------------------------------------------
ALTERNATIVE PLANS SECTION
-------------------------------------------------------------------------------
Plan 3
------
Plan Origin :Cursor Cache
Plan Hash Value :2000621611
Executions :1
Elapsed Time :7.833 sec
CPU Time :7.792 sec
Buffer Gets :493128
Disk Reads :0
Disk Writes :0
Notes:
1. Statistics shown are averaged over multiple executions.
2. The plan matches the original plan.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Byte
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 23 | 499
| 1 | HASH GROUP BY | | 23 | 499
|* 2 | HASH JOIN OUTER | | 23 | 499
|* 3 | HASH JOIN OUTER | | 23 | 356
|* 4 | HASH JOIN OUTER | | 23 | 213
| 5 | VIEW | | 23 | 71
| 6 | HASH GROUP BY | | 23 | 213
|* 7 | FILTER | | |
|* 8 | HASH JOIN RIGHT OUTER | | 550K| 4
| 9 | VIEW | | 546K| 1
| 10 | HASH GROUP BY | | 546K| 1
|* 11 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
|* 12 | HASH JOIN OUTER | | 534K| 3
|* 13 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 14 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 15 | VIEW | | 23 | 142
| 16 | HASH GROUP BY | | 23 | 358
|* 17 | HASH JOIN OUTER | | 57155 | 870
|* 18 | HASH JOIN | | 56711 | 692
|* 19 | FILTER | | |
|* 20 | HASH JOIN OUTER | | 546K| 4
|* 21 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 22 | VIEW | | 546K| 2
| 23 | HASH GROUP BY | | 546K| 1
|* 24 | TABLE ACCESS STORAGE FULL| QMCHECKCARDDEFECT | 546K| 1
|* 25 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 2414K| 9
| 26 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 27 | VIEW | | 23 | 142
| 28 | HASH GROUP BY | | 23 | 220
|* 29 | FILTER | | |
|* 30 | HASH JOIN OUTER | | 131K| 1
|* 31 | HASH JOIN OUTER | | 114K| 706
|* 32 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 114K| 356
| 33 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 34 | VIEW | | 546K| 1
| 35 | HASH GROUP BY | | 546K| 1
|* 36 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
| 37 | VIEW | | 23 | 142
| 38 | HASH GROUP BY | | 23 | 103
| 39 | VIEW | VM_NWVW_1 | 21881 | 96
| 40 | HASH GROUP BY | | 21881 | 256
|* 41 | FILTER | | |
|* 42 | HASH JOIN OUTER | | 21881 | 256
|* 43 | HASH JOIN OUTER | | 19141 | 162
|* 44 | HASH JOIN | | 18993 | 103
|* 45 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 18994 | 50
|* 46 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 47 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 48 | VIEW | | 546K| 1
| 49 | HASH GROUP BY | | 546K| 1
|* 50 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(NVL("A"."LINE",' ')=NVL("D"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("D"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("D"."LOC
"A"."TESTDATE"="D"."TESTDATE"(+))
3 - access(NVL("A"."LINE",' ')=NVL("C"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("C"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("C"."LOC
"A"."TESTDATE"="C"."TESTDATE"(+))
4 - access(NVL("A"."LINE",' ')=NVL("B"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("B"."CARTYPE"(+),' ') AND NVL("A"."LOC",' ')=NVL("B"."LOC"(
"A"."TESTDATE"="B"."TESTDATE"(+))
7 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
8 - access("A22"."VIN"(+)="QCCC"."VIN")
11 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
12 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
13 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
17 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
18 - access("T"."VIN"="QCCC"."VIN" AND NVL("T"."CARTYPE",' ')=NVL("A22"."CARTY
NVL("T"."LINE",' ')=NVL("QCCC"."LINE",' '))
19 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
20 - access("A22"."VIN"(+)="QCCC"."VIN")
21 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
24 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
25 - storage("T"."DEFECTDESA" IS NOT NULL)
filter("T"."DEFECTDESA" IS NOT NULL)
29 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
30 - access("A22"."VIN"(+)="QCCC"."VIN")
31 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
32 - storage("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='0
filter("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='00
36 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
41 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
42 - access("A22"."VIN"(+)="QCCC"."VIN")
43 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
44 - access("T"."VIN"="QCCC"."VIN")
45 - storage("T"."DEFECTDES"='漏雨')
filter("T"."DEFECTDES"='漏雨')
46 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
50 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
Plan 2
------
Plan Origin :AWR
Plan Hash Value :2787380416
Executions :3
Elapsed Time :3.792 sec
CPU Time :3.647 sec
Buffer Gets :493092
Disk Reads :412038
Disk Writes :0
Notes:
1. Statistics shown are averaged over multiple executions.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Byte
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 23 | 499
| 1 | HASH GROUP BY | | 23 | 499
|* 2 | HASH JOIN OUTER | | 23 | 499
|* 3 | HASH JOIN OUTER | | 23 | 356
|* 4 | HASH JOIN OUTER | | 23 | 213
| 5 | VIEW | | 23 | 71
| 6 | HASH GROUP BY | | 23 | 213
|* 7 | FILTER | | |
|* 8 | HASH JOIN RIGHT OUTER | | 550K| 4
| 9 | VIEW | | 546K| 1
| 10 | HASH GROUP BY | | 546K| 1
|* 11 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
|* 12 | HASH JOIN OUTER | | 534K| 3
|* 13 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 14 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 15 | VIEW | | 23 | 142
| 16 | HASH GROUP BY | | 23 | 358
|* 17 | HASH JOIN OUTER | | 57155 | 870
|* 18 | HASH JOIN | | 56711 | 692
|* 19 | FILTER | | |
|* 20 | HASH JOIN RIGHT OUTER | | 546K| 4
| 21 | VIEW | | 546K| 2
| 22 | HASH GROUP BY | | 546K| 1
|* 23 | TABLE ACCESS STORAGE FULL| QMCHECKCARDDEFECT | 546K| 1
|* 24 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
|* 25 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 2414K| 9
| 26 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 27 | VIEW | | 23 | 142
| 28 | HASH GROUP BY | | 23 | 220
|* 29 | FILTER | | |
|* 30 | HASH JOIN OUTER | | 131K| 1
|* 31 | HASH JOIN OUTER | | 114K| 706
|* 32 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 114K| 356
| 33 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 34 | VIEW | | 546K| 1
| 35 | HASH GROUP BY | | 546K| 1
|* 36 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
| 37 | VIEW | | 23 | 142
| 38 | HASH GROUP BY | | 23 | 103
| 39 | VIEW | VM_NWVW_1 | 21881 | 96
| 40 | HASH GROUP BY | | 21881 | 256
|* 41 | HASH JOIN OUTER | | 21881 | 256
|* 42 | FILTER | | |
|* 43 | HASH JOIN OUTER | | 21711 | 188
|* 44 | HASH JOIN | | 18993 | 103
|* 45 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 18994 | 50
|* 46 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 47 | VIEW | | 546K| 1
| 48 | HASH GROUP BY | | 546K| 1
|* 49 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
| 50 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(NVL("A"."LINE",' ')=NVL("D"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("D"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("D"."LOC
"A"."TESTDATE"="D"."TESTDATE"(+))
3 - access(NVL("A"."LINE",' ')=NVL("C"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("C"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("C"."LOC
"A"."TESTDATE"="C"."TESTDATE"(+))
4 - access(NVL("A"."LINE",' ')=NVL("B"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("B"."CARTYPE"(+),' ') AND NVL("A"."LOC",' ')=NVL("B"."LOC"(
"A"."TESTDATE"="B"."TESTDATE"(+))
7 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
8 - access("A22"."VIN"(+)="QCCC"."VIN")
11 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
12 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
13 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
17 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
18 - access("T"."VIN"="QCCC"."VIN" AND NVL("T"."CARTYPE",' ')=NVL("A22"."CARTY
NVL("T"."LINE",' ')=NVL("QCCC"."LINE",' '))
19 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
20 - access("A22"."VIN"(+)="QCCC"."VIN")
23 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
24 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
25 - storage("T"."DEFECTDESA" IS NOT NULL)
filter("T"."DEFECTDESA" IS NOT NULL)
29 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
30 - access("A22"."VIN"(+)="QCCC"."VIN")
31 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
32 - storage("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='0
filter("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='00
36 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
41 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
42 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
43 - access("A22"."VIN"(+)="QCCC"."VIN")
44 - access("T"."VIN"="QCCC"."VIN")
45 - storage("T"."DEFECTDES"='漏雨')
filter("T"."DEFECTDES"='漏雨')
46 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
49 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
Plan 1
------
Plan Origin :AWR
Plan Hash Value :2556778791
Executions :105
Elapsed Time :3.788 sec
CPU Time :3.606 sec
Buffer Gets :493085
Disk Reads :412038
Disk Writes :0
Notes:
1. Statistics shown are averaged over multiple executions.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Byte
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 23 | 499
| 1 | HASH GROUP BY | | 23 | 499
|* 2 | HASH JOIN OUTER | | 23 | 499
|* 3 | HASH JOIN OUTER | | 23 | 356
|* 4 | HASH JOIN OUTER | | 23 | 213
| 5 | VIEW | | 23 | 71
| 6 | HASH GROUP BY | | 23 | 213
|* 7 | FILTER | | |
|* 8 | HASH JOIN RIGHT OUTER | | 550K| 4
| 9 | VIEW | | 546K| 1
| 10 | HASH GROUP BY | | 546K| 1
|* 11 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
|* 12 | HASH JOIN OUTER | | 534K| 3
|* 13 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 14 | INDEX STORAGE FAST FULL SCAN| QMMESPPINFO_01 | 1552K| 4
| 15 | VIEW | | 23 | 142
| 16 | HASH GROUP BY | | 23 | 358
|* 17 | HASH JOIN OUTER | | 57155 | 870
|* 18 | HASH JOIN | | 56711 | 692
|* 19 | FILTER | | |
|* 20 | HASH JOIN RIGHT OUTER | | 546K| 4
| 21 | VIEW | | 546K| 2
| 22 | HASH GROUP BY | | 546K| 1
|* 23 | TABLE ACCESS STORAGE FULL| QMCHECKCARDDEFECT | 546K| 1
|* 24 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
|* 25 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 2414K| 9
| 26 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 27 | VIEW | | 23 | 142
| 28 | HASH GROUP BY | | 23 | 103
| 29 | VIEW | VM_NWVW_1 | 21881 | 96
| 30 | HASH GROUP BY | | 21881 | 256
|* 31 | HASH JOIN OUTER | | 21881 | 256
|* 32 | FILTER | | |
|* 33 | HASH JOIN OUTER | | 21711 | 188
|* 34 | HASH JOIN | | 18993 | 103
|* 35 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 18994 | 50
|* 36 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 529K| 1
| 37 | VIEW | | 546K| 1
| 38 | HASH GROUP BY | | 546K| 1
|* 39 | TABLE ACCESS STORAGE FULL| QMCHECKCARDDEFECT | 546K| 1
| 40 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 41 | VIEW | | 23 | 142
| 42 | HASH GROUP BY | | 23 | 220
|* 43 | FILTER | | |
|* 44 | HASH JOIN OUTER | | 131K| 1
|* 45 | HASH JOIN OUTER | | 114K| 706
|* 46 | TABLE ACCESS STORAGE FULL | QMCHECKCARD | 114K| 356
| 47 | INDEX STORAGE FAST FULL SCAN | QMMESPPINFO_01 | 1552K| 4
| 48 | VIEW | | 546K| 1
| 49 | HASH GROUP BY | | 546K| 1
|* 50 | TABLE ACCESS STORAGE FULL | QMCHECKCARDDEFECT | 546K| 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(NVL("A"."LINE",' ')=NVL("C"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("C"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("C"."LOC
"A"."TESTDATE"="C"."TESTDATE"(+))
3 - access(NVL("A"."LINE",' ')=NVL("D"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("D"."CARSERIEL"(+),' ') AND NVL("A"."LOC",' ')=NVL("D"."LOC
"A"."TESTDATE"="D"."TESTDATE"(+))
4 - access(NVL("A"."LINE",' ')=NVL("B"."LINE"(+),' ') AND NVL("A"."CARSERIEL"
')=NVL("B"."CARTYPE"(+),' ') AND NVL("A"."LOC",' ')=NVL("B"."LOC"(
"A"."TESTDATE"="B"."TESTDATE"(+))
7 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
8 - access("A22"."VIN"(+)="QCCC"."VIN")
11 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
12 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
13 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
17 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
18 - access("T"."VIN"="QCCC"."VIN" AND NVL("T"."CARTYPE",' ')=NVL("A22"."CARTY
NVL("T"."LINE",' ')=NVL("QCCC"."LINE",' '))
19 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
20 - access("A22"."VIN"(+)="QCCC"."VIN")
23 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
24 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
25 - storage("T"."DEFECTDESA" IS NOT NULL)
filter("T"."DEFECTDESA" IS NOT NULL)
31 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
32 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
33 - access("A22"."VIN"(+)="QCCC"."VIN")
34 - access("T"."VIN"="QCCC"."VIN")
35 - storage("T"."DEFECTDES"='漏雨')
filter("T"."DEFECTDES"='漏雨')
36 - storage("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
filter("QCCC"."LOC"='P1' AND "QCCC"."PLANT"='001')
39 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
43 - filter(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE")-CASE WHEN
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')>='2017-02-14' AND TO_CHAR(INTERNAL_FUNCTION("A22"."
(TO_CHAR(INTERNAL_FUNCTION("A22"."MINDATE"),'hh24mi')<'0750') THEN
,'yyyy-mm-dd')<='2017-02-15')
44 - access("A22"."VIN"(+)="QCCC"."VIN")
45 - access("T222"."FATHERMATESEQNO"(+)="QCCC"."VIN")
46 - storage("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='0
filter("QCCC"."STRAIGHT"='1' AND "QCCC"."LOC"='P1' AND "QCCC"."PLANT"='00
50 - storage("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
filter("CARDTYPES"='Z' AND NVL("CONINVFLAG",'N')<>'Y')
-------------------------------------------------------------------------------
Object ID : 285378
Schema Name: JC800
SQL ID : 37dx4sx5vk529
SQL Text : select distinct scmrfqcont0_.vendorNO as x0_0_,
scmrfqcont0_.inquryNo as x1_0_, scmrfqcont0_.inquryTimes as
x2_0_, scmsupplie1_.shortName as x3_0_ from SCMRFQContact
scmrfqcont0_, SCMSupplierResource scmsupplie1_ where
(scmrfqcont0_.client='800' )and(scmrfqcont0_.vendorNO=scmsupplie1
_.vendorNO )and(scmrfqcont0_.client=scmsupplie1_.client
)and(scmrfqcont0_.vendorNO not in(select scmcomplet2_.vendorNO
from SCMCompletion scmcomplet2_ where
(scmrfqcont0_.client=scmcomplet2_.client
)and(scmrfqcont0_.inquryNo=scmcomplet2_.inquryNo
)and(scmrfqcont0_.inquryTimes=scmcomplet2_.inquryTimes
)))and((scmrfqcont0_.inquryNo , scmrfqcont0_.inquryTimes)in(('201
4030011' , '1'),('2014040062' , '2'),('2014040064' ,
'4'),('2014040067' , '6'),('2014040219' , '5'),('2014040229' ,
'4'),('2014050002' , '3'),('2014050004' , '3'),('2014050005' ,
'2'),('2014050011' , '5'),('2014050023' , '5'),('2014050029' ,
'5'),('2014050043' , '2'),('2014050053' , '2'),('2014050056' ,
'2'),('2014050123' , '3'),('2014050144' , '2'),('2014050152' ,
'3'),('2014050168' , '5'),('2014050233' , '2'),('2014050253' ,
'3'),('2014050370' , '3'),('2014060003' , '1'),('2014060142' ,
'2'),('2014060217' , '2'),('2014070121' , '2'),('2014090178' ,
'5'),('2014090227' , '3'),('2014090278' , '4'),('2014110374' ,
'2'),('2014120129' , '3'),('2014120480' , '2'),('2015010089' ,
'1'),('2015030194' , '1'),('2015030263' , '4'),('2015040209' ,
'1'),('2015040346' , '1'),('2015050026' , '6'),('2015060075' ,
'1'),('2015060076' , '1'),('2015060081' , '1'),('2015060217' ,
'1'),('2015060286' , '3'),('2015060331' , '3'),('2015060332' ,
'3'),('2015060335' , '2'),('2015060390' , '2'),('2015070056' ,
'3'),('2015070212' , '1'),('2015070300' , '2'),('2015080057' ,
'1'),('2015080115' , '1'),('2015080301' , '7'),('2015090010' ,
'3'),('2015090034' , '6'),('2015090181' , '4'),('2015090304' ,
'1'),('2015090310' , '11'),('2015090421' , '8'),('2015090493' ,
'3'),('2015100306' , '1'),('2015110299' , '1'),('2015120047' ,
'3'),('2015120049' , '1'),('2015120060' , '5'),('2015120176' ,
'3'),('2015120255' , '3'),('2015120424' , '4'),('2015120448' ,
'2'),('2015120489' , '4'),('2016010006' , '2'),('2016010018' ,
'1'),('2016010019' , '2'),('2016010020' , '2'),('2016010046' ,
'4'),('2016010072' , '1'),('2016010114' , '2'),('2016010190' ,
'3'),('2016010249' , '2'),('2016020076' , '3'),('2016030060' ,
'1'),('2016030080' , '3'),('2016030100' , '3'),('2016030142' ,
'2'),('2016030171' , '5'),('2016030254' , '2'),('2016030255' ,
'3'),('2016030256' , '2'),('2016030377' , '5'),('2016030387' ,
'4'),('2016030424' , '5'),('2016030432' , '5'),('2016040359' ,
'3'),('2016040411' , '1'),('2016040425' , '5'),('2016040478' ,
'3'),('2016040486' , '1'),('2016050123' , '2'),('2016050196' ,
'3'),('2016050269' , '2'),('2016050373' , '2'),('2016060125' ,
'2'),('2016060148' , '6'),('2016060160' , '3'),('2016060204' ,
'3'),('2016060231' , '3'),('2016060250' , '2'),('2016060318' ,
'1'),('2016070062' , '3'),('2016070135' , '6'),('2016070259' ,
'1'),('2016070298' , '3'),('2016070380' , '3'),('2016070381' ,
'3'),('2016080021' , '3'),('2016080117' , '2'),('2016080141' ,
'1'),('2016080142' , '1'),('2016080153' , '1'),('2016080156' ,
'4'),('2016080182' , '2'),('2016080183' , '4'),('2016080287' ,
'4'),('2016080337' , '2'),('2016080344' , '2'),('2016080369' ,
'3'),('2016080375' , '1'),('2016080377' , '1'),('2016080382' ,
'2'),('2016080425' , '4'),('2016080428' , '4'),('2016090019' ,
'3'),('2016090020' , '2'),('2016090021' , '2'),('2016090260' ,
'4'),('2016090261' , '5'),('2016090267' , '1'),('2016090276' ,
'5'),('2016090322' , '2'),('2016100146' , '2'),('2016100150' ,
'2'),('2016100254' , '5'),('2016100255' , '4'),('2016100313' ,
'4'),('2016100315' , '2'),('2016110052' , '2'),('2016110056' ,
'2'),('2016110061' , '2'),('2016110271' , '2'),('2016110272' ,
'4'),('2016110304' , '2'),('2016110306' , '2'),('2016110456' ,
'3'),('2016110465' , '3'),('2016110479' , '7'),('2016110504' ,
'2'),('2016110622' , '2'),('2016120055' , '2'),('2016120056' ,
'2'),('2016120234' , '1'),('2016120312' , '2'),('2016120351' ,
'2'),('2016120474' , '2'),('2017010001' , '1'),('2017010015' ,
'2'),('2017010125' , '2'),('2017010192' , '2'),('2017010205' ,
'2'),('2017010258' , '1'),('2017020029' , '1'),('2017020168' ,
'1'),('2017020170' , '1'))) order by scmrfqcont0_.vendorNO
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.69%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001002C on JC800.SCMCOMPLETION("INQURYNO","INQURY
TIMES");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_0001002D on JC800.SCMSUPPLIERRESOURCE("CLIENT","VE
NDORNO","SHORTNAME");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
2- Restructure SQL finding (see plan 1 in explain plans section)
----------------------------------------------------------------
优化程序不能取消执行计划的行 ID 2 处的子查询的嵌套。
Recommendation
--------------
- 考虑用 "NOT EXISTS" 代替 "NOT IN", 或者确保已通过添加 "NOT NULL" 约束条件或 "IS NOT NULL"
谓词将 "NOT IN" 运算符的两边所使用的列声明为 "NOT NULL"。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 3079065381
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | B
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 23 |
| 1 | SORT UNIQUE | | 23 |
|* 2 | FILTER | | |
|* 3 | HASH JOIN | | 117 |
|* 4 | INDEX STORAGE FAST FULL SCAN | SCMRFQCONTACT_U | 125 |
|* 5 | TABLE ACCESS STORAGE FULL | SCMSUPPLIERRESOURCE | 2242 | 6
|* 6 | TABLE ACCESS STORAGE FULL FIRST ROWS| SCMCOMPLETION | 1 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter( NOT EXISTS (SELECT 0 FROM "SCMCOMPLETION" "SCMCOMPLET2_" WHERE
"SCMCOMPLET2_"."INQURYNO"=:B1 AND "SCMCOMPLET2_"."INQURYTIMES"=:B2
AND LNNVL("SCMCOMPLET2_"."VENDORNO"<>:B4)))
3 - access("SCMRFQCONT0_"."VENDORNO"="SCMSUPPLIE1_"."VENDORNO" AND
"SCMRFQCONT0_"."CLIENT"="SCMSUPPLIE1_"."CLIENT")
4 - storage(("SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='11' AND "SCMRFQCONT0_"."INQURYNO"='2
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCON)
filter(("SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='2
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='11' AND "SCMRFQCONT0_"."INQURYNO"='2
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCON)
5 - storage("SCMSUPPLIE1_"."CLIENT"='800')
filter("SCMSUPPLIE1_"."CLIENT"='800')
6 - filter("SCMCOMPLET2_"."INQURYNO"=:B1 AND "SCMCOMPLET2_"."INQURYTIMES"=:B2
"SCMCOMPLET2_"."CLIENT"=:B3 AND LNNVL("SCMCOMPLET2_"."VENDORNO"<>:
2- Using New Indices
--------------------
Plan hash value: 781459113
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 117 | 6318 | 23
| 1 | SORT ORDER BY | | 117 | 6318 | 23
|* 2 | FILTER | | | |
|* 3 | HASH JOIN | | 117 | 6318 | 11
|* 4 | INDEX STORAGE FAST FULL SCAN| SCMRFQCONTACT_U | 125 | 3250 | 11
|* 5 | INDEX STORAGE FAST FULL SCAN| IDX$$_0001002D | 2242 | 62776 |
|* 6 | TABLE ACCESS BY INDEX ROWID | SCMCOMPLETION | 1 | 26 |
|* 7 | INDEX RANGE SCAN | IDX$$_0001002C | 1 | |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter( NOT EXISTS (SELECT 0 FROM "SCMCOMPLETION" "SCMCOMPLET2_" WHERE
"SCMCOMPLET2_"."INQURYTIMES"=:B1 AND "SCMCOMPLET2_"."INQURYNO"=:B2
"SCMCOMPLET2_"."CLIENT"=:B3 AND LNNVL("SCMCOMPLET2_"."VENDORNO"<>:
3 - access("SCMRFQCONT0_"."VENDORNO"="SCMSUPPLIE1_"."VENDORNO" AND
"SCMRFQCONT0_"."CLIENT"="SCMSUPPLIE1_"."CLIENT")
4 - storage(("SCMRFQCONT0_"."INQURYTIMES"='1' AND
"SCMRFQCONT0_"."INQURYNO"='2014030011' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014060003' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015010089' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015030194' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015040209' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015040346' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015060075' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015060076' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015060081' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015060217' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015070212' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015080057' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015080115' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015090304' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015100306' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015110299' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015120049' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016010018' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016010072' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016030060' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016040411' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016040486' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016060318' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016070259' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016080141' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016080142' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016080153' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016080375' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016080377' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016090267' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2016120234' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2017010001' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2017010258' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2017020029' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2017020168' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2017020170' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015090310' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014040062' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014050005' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014050043' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014050053' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014050056' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014050144' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014050233' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014060142' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014060217' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014070121' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014110374' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2014120480' OR "SCMRFQCONT0_"."INQURYTI
"SCMRFQCONT0_"."INQURYNO"='2015060335' OR "SCMRFQCONT0_"."INQURYTI
filter(("SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='2
OR "SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"=
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='1' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='11' AND "SCMRFQCONT0_"."INQURYNO"='2
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCONT0_"."INQURYNO"='20
"SCMRFQCONT0_"."INQURYTIMES"='2' AND "SCMRFQCON)
5 - storage("SCMSUPPLIE1_"."CLIENT"='800')
filter("SCMSUPPLIE1_"."CLIENT"='800')
6 - filter("SCMCOMPLET2_"."CLIENT"=:B1 AND LNNVL("SCMCOMPLET2_"."VENDORNO"<>:
7 - access("SCMCOMPLET2_"."INQURYNO"=:B1 AND "SCMCOMPLET2_"."INQURYTIMES"=:B2
-------------------------------------------------------------------------------
Object ID : 285290
Schema Name: REPDBNEW
SQL ID : 071wjj7t0qtpn
SQL Text : DELETE FROM FT_GLD_DOCLINE_T WHERE FISCALYEAR =
TO_CHAR(ADD_MONTHS(:B1 ,-2) , 'YYYY') AND POSTPERIOD =
TO_CHAR(ADD_MONTHS(:B1 ,-2) , 'MM')
-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------
1- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 99.03%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index REPDBNEW.IDX$$_00010004 on
REPDBNEW.FT_GLD_DOCLINE_T("FISCALYEAR","POSTPERIOD");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 2347627567
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%C
--------------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 1421K| 47M| 439K
| 1 | DELETE | FT_GLD_DOCLINE_T | | |
|* 2 | TABLE ACCESS STORAGE FULL| FT_GLD_DOCLINE_T | 1421K| 47M| 439K
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - storage("FISCALYEAR"=TO_CHAR(ADD_MONTHS(:B1,(-2)),'YYYY') AND
"POSTPERIOD"=TO_CHAR(ADD_MONTHS(:B1,(-2)),'MM'))
filter("FISCALYEAR"=TO_CHAR(ADD_MONTHS(:B1,(-2)),'YYYY') AND
"POSTPERIOD"=TO_CHAR(ADD_MONTHS(:B1,(-2)),'MM'))
2- Using New Indices
--------------------
Plan hash value: 3368067652
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 1421K| 78M| 4260 (1)| 00:0
| 1 | DELETE | FT_GLD_DOCLINE_T | | | |
|* 2 | INDEX RANGE SCAN| IDX$$_00010004 | 1421K| 78M| 4260 (1)| 00:0
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("FISCALYEAR"=TO_CHAR(ADD_MONTHS(:B1,(-2)),'YYYY') AND
"POSTPERIOD"=TO_CHAR(ADD_MONTHS(:B1,(-2)),'MM'))
-------------------------------------------------------------------------------
Object ID : 285328
Schema Name: JC800
SQL ID : 90tacxzfd05sm
SQL Text : select glddochead1_.docNO as x0_0_, glddochead1_.fiscalYear as
x1_0_, glddochead1_.POSTPERIOD as x2_0_, glddocline2_.locCurrAmt
as x3_0_, glddocline2_.GLAcct2 as x4_0_, glddocline2_.DCIndic as
x5_0_, glddocline2_.ordNO as x6_0_ from MLDTemp1 mldtemp10_,
GLDDocHeader glddochead1_, GLDDocLine glddocline2_ where
(glddochead1_.client='800' )and(glddochead1_.client=glddocline2_.
client )and(glddochead1_.docNO=glddocline2_.docNO
)and(glddochead1_.fiscalYear=glddocline2_.fiscalYear
)and(glddochead1_.POSTPERIOD=glddocline2_.POSTPERIOD
)and((glddochead1_.referenceProc<>'AUAK'
)or(glddochead1_.referenceProc is null
))and(((glddochead1_.fiscalYear<'2017'
))or((glddochead1_.fiscalYear='2017'
)and(glddochead1_.POSTPERIOD<='01' )))and((glddocline2_.GLAcct2
in('50010204' , '5301021101' , '5301021102' , '5001090802' ,
'5301020802' , '5301020801' , '53010106' , '53010108' ,
'53010109' , '6602050201' , '6602050202' , '6602050301' ,
'5001090499' , '6602050302' , '1604020201' , '5301011202' ,
'5301011201' , '66020304' , '5301010704' , '5301010701' ,
'53010299040401' , '500109029999' , '5301019999' ,
'530101990301' , '66020302' , '530101990302' , '5301020502' ,
'5301020503' , '66020599' , '50010603' , '5301020101' ,
'6602010102' , '6602010103' , '6602010101' , '50010302' ,
'5001099912' , '500109020302' , '5301029901' , '5301029905' ,
'5301029906' , '53010209' , '53010208' , '5001099906' ,
'5001099908' , '5301010102' , '5301010101' , '1601' ,
'6602999902' , '53010119' , '660209020202' , '530102160299' ,
'660209020201' , '5301010399' , '53010112' , '53010111' ,
'53010114' , '53010116' , '530102160399' , '66022202' ,
'5301011102' , '53010219' , '53010120' , '5001090302' ,
'5301011101' , '500109990901' , '53010216' , '53010211' ,
'66022207' , '53010212' , '53010213' , '500109990402' ,
'500109990401' , '14040502' , '14040501' , '530102999902' ,
'530102999901' , '5301019904020202' , '530102999903' ,
'66022903' , '5301019904020201' , '50010508' , '530102999905' ,
'66022907' , '530101999999' , '500109991004' , '530101160299' ,
'530102160101' , '500190' , '530101160306' , '530101160199' ,
'530101160305' , '530102999999' , '50010906' , '530101160304' ,
'530101160303' , '500109991003' , '530101160302' ,
'500109991002' , '500109991001' , '530101160301' , '5001090704'
, '530101030102' , '530101030103' , '530101030101' ,
'530102990301' , '530102990302' , '5301020701' , '6602050402' ,
'1604030201' , '50010801' , '66020901' , '500109040201' ,
'660236' , '660237' , '5301010802' , '6602220501' , '5301010801'
, '5001091203' , '6602010401' , '5301019901' , '5301019902' ,
'5301019904' , '5301019905' , '5301019906' , '5301010502' ,
'5301010501' , '5301010401' , '5301010503' , '5301010403' ,
'5301010402' , '660226' , '660227' , '660224' , '5301021201' ,
'660113' , '5301021803' , '5301021202' , '170199' , '660118' ,
'660119' , '500109991099' , '6602090401' , '5301029999' ,
'660213' , '660216' , '660215' , '660210' , '500109990302' ,
'660212' , '660211' , '221118' , '221112' , '530101030402' ,
'530101990403' , '530101030401' , '530101030404' , '66020103' ,
'530101990401' , '530101030403' , '530101030406' ,
'530101030405' , '530101030407' , '5301011801' , '5301011802' ,
'5301011803' , '66020105' , '66020106' , '66020107' ,
'5301010303' , '5301010304' , '6602291301' , '53010199040201' ,
'5301010309' , '5301010201' , '5301010305' , '660208' ,
'5301010307' , '530101160105' , '66020402' , '530101160103' ,
'530101160102' , '500109040301' , '530101160204' ,
'530101160101' , '530101160203' , '530101160202' ,
'500109040303' , '66020401' , '500109040302' , '530101160201' ,
'530101160206' , '530101160205' , '530101160399' ,
'500109040102' , '530102160206' , '5301010310' , '500109040103'
, '530102160204' , '530102160205' , '530102160202' ,
'530102160203' , '500109040101' , '530102160201' ,
'530102160301' , '1604010201' , '530102160302' , '530102160305'
, '530102160303' , '530102160304' , '66021403' , '66021404' ,
'5001090406' , '66021408' , '500109990999' , '530101999902' ,
'530101999903' , '530101999901' , '66021401' , '66021402' ,
'530101999905' , '5001090101' , '53010199040402' ,
'53010199040401')))and((mldtemp10_.p1=glddocline2_.ordNO ))
-------------------------------------------------------------------------------
FINDINGS SECTION (3 findings)
-------------------------------------------------------------------------------
1- Statistics Finding
---------------------
尚未分析表 "JC800"."MLDTEMP1"。
Recommendation
--------------
- 考虑收集此表的优化程序统计信息。
execute dbms_stats.gather_table_stats(ownname => 'JC800', tabname =>
'MLDTEMP1', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
method_opt => 'FOR ALL COLUMNS SIZE AUTO');
Rationale
---------
为了选择好的执行计划, 优化程序需要此表的最新统计信息。
2- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划。
SQL 概要文件未自动创建, 因为优化程序统计信息已陈旧或缺失。在创建 SQL 概要文件前, 应先解决基本优化程序统计信息的问题。
Recommendation (estimated benefit: 99%)
---------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285328, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): .000021 .000026 -23.8 %
CPU Time (s): .0001 0 100 %
User I/O Time (s): 0 0
Buffer Gets: 0 0
Physical Read Requests: 0 0
Physical Write Requests: 0 0
Physical Read Bytes: 0 0
Physical Write Bytes: 0 0
Rows Processed: 0 0
Fetches: 0 0
Executions: 1 1
Notes
-----
1. the original plan 的统计信息是 10 执行的平均值。
2. the SQL profile plan 的统计信息是 10 执行的平均值。
3- Alternative Plan Finding
---------------------------
通过搜索系统的实时和历史性能数据找到了此语句的某些替代执行计划。
The following table lists these plans ranked by their average elapsed time.
See section "ALTERNATIVE PLANS SECTION" for detailed information on each
plan.
id plan hash last seen elapsed (s) origin note
-- ---------- -------------------- ------------ --------------- --------------
1 1394006653 2017-02-14/08:00:06 51.937 AWR
Information
-----------
- 因为找不到原始计划的任何执行历史记录, SQL 优化指导无法确定这些执行计划中是否有一些执行计划优于原始计划。但是,
如果您知道某个替代计划优于原始计划, 可以为该替代计划创建 SQL 计划基线。这将指示 Oracle 优化程序在将来优先于任何其他选择来选取它。
execute dbms_sqltune.create_sql_plan_baseline(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285328, owner_name =>
'SYS', plan_hash_value => xxxxxxxx);
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 1965946450
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 371K| 732M
| 1 | NESTED LOOPS | | |
| 2 | NESTED LOOPS | | 371K| 732M
| 3 | NESTED LOOPS | | 735K| 1430M
| 4 | TABLE ACCESS STORAGE FULL | MLDTEMP1 | 8168 | 15M
|* 5 | TABLE ACCESS BY GLOBAL INDEX ROWID| GLDDOCLINE | 90 | 3420
|* 6 | INDEX RANGE SCAN | GLDDOCLINE_ORD1 | 423 |
|* 7 | INDEX RANGE SCAN | GLDDOCHEADER_U | 1 |
|* 8 | TABLE ACCESS BY INDEX ROWID | GLDDOCHEADER | 1 | 26
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - filter("GLDDOCLINE2_"."CLIENT"='800')
6 - access("MLDTEMP10_"."P1"="GLDDOCLINE2_"."ORDNO")
filter("GLDDOCLINE2_"."GLACCT2"='14040501' OR "GLDDOCLINE2_"."GLACCT2"='1
"GLDDOCLINE2_"."GLACCT2"='1601' OR "GLDDOCLINE2_"."GLACCT2"='16040
"GLDDOCLINE2_"."GLACCT2"='1604020201' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='170199' OR "GLDDOCLINE2_"."GLACCT2"='221
"GLDDOCLINE2_"."GLACCT2"='50010204' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='50010508' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='50010801' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='500109020302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001090302' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109040102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109040201' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109040302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001090406' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='50010906' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5001090802' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109990302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109990402' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001099908' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109990999' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109991002' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109991004' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001099912' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010101' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010201' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='530101030102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5301010303' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='530101030401' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030403' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030405' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030407' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5301010307' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010310' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010401' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010403' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010502' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010106' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301010704' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010801' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010109' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301011101' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010112' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301011202' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010116' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='530101160102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160105' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160201' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160203' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160205' OR "GLDDOCLINE2_"."GLACCT2
7 - access("GLDDOCHEAD1_"."DOCNO"="GLDDOCLINE2_"."DOCNO" AND
"GLDDOCHEAD1_"."POSTPERIOD"="GLDDOCLINE2_"."POSTPERIOD" AND
"GLDDOCHEAD1_"."FISCALYEAR"="GLDDOCLINE2_"."FISCALYEAR" AND "GLDDO
filter("GLDDOCHEAD1_"."FISCALYEAR"<'2017' OR "GLDDOCHEAD1_"."FISCALYEAR"=
"GLDDOCHEAD1_"."POSTPERIOD"<='01')
8 - filter("GLDDOCHEAD1_"."REFERENCEPROC"<>'AUAK' OR "GLDDOCHEAD1_"."REFERENC
2- Using SQL Profile
--------------------
Plan hash value: 4130975726
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2066
|* 1 | TABLE ACCESS BY INDEX ROWID | GLDDOCHEADER | 1 | 26
| 2 | NESTED LOOPS | | 1 | 2066
| 3 | NESTED LOOPS | | 1 | 2040
| 4 | TABLE ACCESS STORAGE FULL | MLDTEMP1 | 1 | 2002
|* 5 | TABLE ACCESS BY GLOBAL INDEX ROWID| GLDDOCLINE | 90 | 3420
|* 6 | INDEX RANGE SCAN | GLDDOCLINE_ORD1 | 92 |
|* 7 | INDEX RANGE SCAN | GLDDOCHEADER_U | 1 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("GLDDOCHEAD1_"."REFERENCEPROC"<>'AUAK' OR "GLDDOCHEAD1_"."REFERENC
5 - filter("GLDDOCLINE2_"."CLIENT"='800')
6 - access("MLDTEMP10_"."P1"="GLDDOCLINE2_"."ORDNO")
filter("GLDDOCLINE2_"."GLACCT2"='14040501' OR "GLDDOCLINE2_"."GLACCT2"='1
"GLDDOCLINE2_"."GLACCT2"='1601' OR "GLDDOCLINE2_"."GLACCT2"='16040
"GLDDOCLINE2_"."GLACCT2"='1604020201' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='170199' OR "GLDDOCLINE2_"."GLACCT2"='221
"GLDDOCLINE2_"."GLACCT2"='50010204' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='50010508' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='50010801' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='500109020302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001090302' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109040102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109040201' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109040302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001090406' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='50010906' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5001090802' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109990302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109990402' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001099908' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109990999' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109991002' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109991004' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001099912' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010101' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010201' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='530101030102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5301010303' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='530101030401' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030403' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030405' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030407' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5301010307' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010310' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010401' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010403' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010502' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010106' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301010704' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010801' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010109' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301011101' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010112' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301011202' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010116' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='530101160102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160105' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160201' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160203' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160205' OR "GLDDOCLINE2_"."GLACCT2
7 - access("GLDDOCHEAD1_"."DOCNO"="GLDDOCLINE2_"."DOCNO" AND
"GLDDOCHEAD1_"."POSTPERIOD"="GLDDOCLINE2_"."POSTPERIOD" AND
"GLDDOCHEAD1_"."FISCALYEAR"="GLDDOCLINE2_"."FISCALYEAR" AND "GLDDO
filter("GLDDOCHEAD1_"."FISCALYEAR"<'2017' OR "GLDDOCHEAD1_"."FISCALYEAR"=
"GLDDOCHEAD1_"."POSTPERIOD"<='01')
-------------------------------------------------------------------------------
ALTERNATIVE PLANS SECTION
-------------------------------------------------------------------------------
Plan 1
------
Plan Origin :AWR
Plan Hash Value :1394006653
Executions :6
Elapsed Time :51.937 sec
CPU Time :25.452 sec
Buffer Gets :11172842
Disk Reads :11307232
Disk Writes :135253
Notes:
1. Statistics shown are averaged over multiple executions.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| C
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 371K| 732M| |
|* 1 | HASH JOIN | | 371K| 732M| 15M|
| 2 | TABLE ACCESS STORAGE FULL | MLDTEMP1 | 8168 | 15M| |
|* 3 | HASH JOIN | | 19M| 1177M| 381M|
| 4 | PART JOIN FILTER CREATE | :BF0000 | 10M| 261M| |
|* 5 | TABLE ACCESS STORAGE FULL | GLDDOCHEADER | 10M| 261M| |
| 6 | PARTITION RANGE JOIN-FILTER| | 38M| 1383M| |
|* 7 | TABLE ACCESS STORAGE FULL | GLDDOCLINE | 38M| 1383M| |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("MLDTEMP10_"."P1"="GLDDOCLINE2_"."ORDNO")
3 - access("GLDDOCHEAD1_"."FISCALYEAR"="GLDDOCLINE2_"."FISCALYEAR" AND
"GLDDOCHEAD1_"."POSTPERIOD"="GLDDOCLINE2_"."POSTPERIOD" AND "GLDDO
AND "GLDDOCHEAD1_"."DOCNO"="GLDDOCLINE2_"."DOCNO")
5 - storage(("GLDDOCHEAD1_"."REFERENCEPROC"<>'AUAK' OR "GLDDOCHEAD1_"."REFERE
("GLDDOCHEAD1_"."FISCALYEAR"<'2017' OR "GLDDOCHEAD1_"."FISCALYEAR"
"GLDDOCHEAD1_"."POSTPERIOD"<='01') AND "GLDDOCHEAD1_"."CLIENT"='80
filter(("GLDDOCHEAD1_"."REFERENCEPROC"<>'AUAK' OR "GLDDOCHEAD1_"."REFEREN
("GLDDOCHEAD1_"."FISCALYEAR"<'2017' OR "GLDDOCHEAD1_"."FISCALYEAR"
"GLDDOCHEAD1_"."POSTPERIOD"<='01') AND "GLDDOCHEAD1_"."CLIENT"='80
7 - storage(("GLDDOCLINE2_"."GLACCT2"='14040501' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='1601' OR "GLDDOCLINE2_"."GLACCT2"='16040
"GLDDOCLINE2_"."GLACCT2"='1604020201' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='170199' OR "GLDDOCLINE2_"."GLACCT2"='221
OR "GLDDOCLINE2_"."GLACCT2"='50010204' OR "GLDDOCLINE2_"."GLACCT2"
"GLDDOCLINE2_"."GLACCT2"='50010508' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='50010801' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='500109020302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001090302' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109040102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109040201' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109040302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001090406' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='50010906' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5001090802' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109990302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109990402' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001099908' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109990999' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109991002' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109991004' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001099912' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010101' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010201' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='530101030102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5301010303' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='530101030401' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030403' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030405' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030407' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5301010307' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010310' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010401' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010403' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010502' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010106' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301010704' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010801' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010109' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301011101' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010112' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301011202' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010116' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='530101160102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160105' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160201' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160203' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160205' OR "GLDDOCLINE2_"."GLACCT2
filter(("GLDDOCLINE2_"."GLACCT2"='14040501' OR "GLDDOCLINE2_"."GLACCT2"='
"GLDDOCLINE2_"."GLACCT2"='1601' OR "GLDDOCLINE2_"."GLACCT2"='16040
"GLDDOCLINE2_"."GLACCT2"='1604020201' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='170199' OR "GLDDOCLINE2_"."GLACCT2"='221
OR "GLDDOCLINE2_"."GLACCT2"='50010204' OR "GLDDOCLINE2_"."GLACCT2"
"GLDDOCLINE2_"."GLACCT2"='50010508' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='50010801' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='500109020302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001090302' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109040102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109040201' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109040302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001090406' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='50010906' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5001090802' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109990302' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109990402' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001099908' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='500109990999' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109991002' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='500109991004' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5001099912' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010101' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010201' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='530101030102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5301010303' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='530101030401' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030403' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030405' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101030407' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='5301010307' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010310' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010401' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010403' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010502' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010106' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301010704' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='5301010801' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010109' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301011101' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010112' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='5301011202' OR "GLDDOCLINE2_"."GLACCT2"=
"GLDDOCLINE2_"."GLACCT2"='53010116' OR "GLDDOCLINE2_"."GLACCT2"='5
"GLDDOCLINE2_"."GLACCT2"='530101160102' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160105' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160201' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160203' OR "GLDDOCLINE2_"."GLACCT2
"GLDDOCLINE2_"."GLACCT2"='530101160205' OR "GLDDOCLINE2_"."GLACCT2
-------------------------------------------------------------------------------
Object ID : 285301
Schema Name: JC800
SQL ID : 9tfsc9v5fs4d7
SQL Text : select b.purDocNO,b.purDocLineNO from PURDocHeader a,PURDocItem
b where a.client=b.client and a.purDocNO=b.purDocNO and
b.purDocDeletionIndic is null and a.client='800' and
a.vendorNO=:1 and a.validityStartPeriod<:2 and
a.validityEndPeriod>=:3 and b.mtlNO=:4 and b.plant=:5 and
b.purDocItemCtg=:6
-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------
1- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 96.27%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010005 on JC800.PURDOCHEADER("VENDORNO","CLIENT"
,"VALIDITYENDPERIOD");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010006 on JC800.PURDOCITEM("PLANT","MTLNO","PURD
OCDELETIONINDIC","PURDOCITEMCTG","CLIENT","PURDOCNO","PURDOCLINENO");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 2166617203
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 63 | 188
| 1 | NESTED LOOPS | | | |
| 2 | NESTED LOOPS | | 1 | 63 | 188
|* 3 | TABLE ACCESS BY INDEX ROWID| PURDOCITEM | 65 | 2535 | 58
|* 4 | INDEX RANGE SCAN | PURDOCITEM_I | 65 | | 3
|* 5 | INDEX UNIQUE SCAN | PURDOCHEADER_U | 1 | | 1
|* 6 | TABLE ACCESS BY INDEX ROWID | PURDOCHEADER | 1 | 24 | 2
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("B"."PURDOCDELETIONINDIC" IS NULL AND "B"."PURDOCITEMCTG"=:6)
4 - access("B"."MTLNO"=:4 AND "B"."PLANT"=:5 AND "B"."CLIENT"='800')
5 - access("A"."PURDOCNO"="B"."PURDOCNO" AND "A"."CLIENT"='800')
6 - filter("A"."VENDORNO"=:1 AND "A"."VALIDITYENDPERIOD">=:3 AND
"A"."VALIDITYSTARTPERIOD"<:2)
2- Using New Indices
--------------------
Plan hash value: 431174003
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%C
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 63 | 7
| 1 | NESTED LOOPS | | 1 | 63 | 7
|* 2 | TABLE ACCESS BY INDEX ROWID| PURDOCHEADER | 1 | 24 | 4
|* 3 | INDEX RANGE SCAN | IDX$$_00010005 | 1 | | 3
|* 4 | INDEX RANGE SCAN | IDX$$_00010006 | 1 | 39 | 3
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("A"."VALIDITYSTARTPERIOD"<:2)
3 - access("A"."VENDORNO"=:1 AND "A"."CLIENT"='800' AND "A"."VALIDITYENDPERIO
AND "A"."VALIDITYENDPERIOD" IS NOT NULL)
4 - access("B"."PLANT"=:5 AND "B"."MTLNO"=:4 AND "B"."PURDOCDELETIONINDIC" IS
AND "B"."PURDOCITEMCTG"=:6 AND "B"."CLIENT"='800' AND "A"."PURDOCN
filter("B"."PURDOCITEMCTG"=:6 AND "B"."CLIENT"='800' AND
"A"."PURDOCNO"="B"."PURDOCNO")
-------------------------------------------------------------------------------
Object ID : 285342
Schema Name: REPDBNEW
SQL ID : 9r7ta5r2dvfty
SQL Text : UPDATE REP_ZJGC A SET A.OPENBAL = NVL (A.OPENBAL, 0) + NVL (
(SELECT OPENBAL FROM FXA_ZJGC_TEMP3 WHERE ORDERNO = A.ORDERNO
AND COMPANYCODE = A.COMPANYCODE AND CLIENT = A.CLIENT AND
YEARFLAG = 'l'), 0 ), A.EXPCURRYEAR = NVL (A.EXPCURRYEAR, 0) +
NVL ( (SELECT OPENBAL FROM FXA_ZJGC_TEMP3 WHERE ORDERNO =
A.ORDERNO AND COMPANYCODE = A.COMPANYCODE AND CLIENT = A.CLIENT
AND YEARFLAG = 'c'), 0 ), A.EXPSUM = NVL (A.EXPSUM, 0) + NVL (
(SELECT SUM (OPENBAL) FROM FXA_ZJGC_TEMP3 WHERE ORDERNO =
A.ORDERNO AND COMPANYCODE = A.COMPANYCODE AND CLIENT = A.CLIENT
AND YEARFLAG IN ('c', 's')), 0 ), A.NONPAYMENT = NVL
(A.NONPAYMENT, 0) + NVL ( ( SELECT SUM (NETVALUE) FROM
FXA_ZJGC_TEMP10 WHERE CLIENT = A.CLIENT AND ORDNO = A.ORDERNO
GROUP BY ORDNO, CLIENT), 0), A.APPDATE = (SELECT APPDATE FROM
FXA_ZJGC_TEMP10 WHERE CLIENT = A.CLIENT AND ORDNO = A.ORDERNO),
A.PREPAYOFFACILITY = NVL ( (SELECT SUM (PREPAYOFFACILITY) FROM
FXA_ZJGC_TEMP14 B, PURDOCHEADER C, IOARELATBETWOCATDT D WHERE
B.CLIENT = A.CLIENT AND B.COMPANYCODE = A.COMPANYCODE AND
B.ORDNO = A.ORDERNO AND A.CLIENT = C.CLIENT AND A.CLIENT =
D.CLIENT AND A.COMPANYCODE = C.COMPANYCODE AND B.PURDOCNO =
C.PURDOCNO AND C.ORDTYPE = D.ORDTYPE AND D.PURCHORDERCATETYPE =
'02'), 0 ) WHERE A.FISCALYEAR = :B3 AND A.POSTPERIOD = :B2 AND
A.COMPANYCODE = :B1
-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------
1- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 84.95%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index REPDBNEW.IDX$$_00010013 on
REPDBNEW.FXA_ZJGC_TEMP3("ORDERNO","YEARFLAG","CLIENT","COMPANYCODE");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index REPDBNEW.IDX$$_00010014 on
REPDBNEW.FXA_ZJGC_TEMP10("ORDNO","CLIENT");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index REPDBNEW.IDX$$_00010016 on
REPDBNEW.FXA_ZJGC_TEMP14("CLIENT","ORDNO","COMPANYCODE","PURDOCNO");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010017 on JC800.PURDOCHEADER("CLIENT","COMPANYCO
DE","PURDOCNO","ORDTYPE");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 2791570358
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | B
--------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | 23251 |
| 1 | UPDATE | REP_ZJGC | |
|* 2 | TABLE ACCESS STORAGE FULL | REP_ZJGC | 23251 |
|* 3 | TABLE ACCESS STORAGE FULL FIRST ROWS| FXA_ZJGC_TEMP3 | 1 |
|* 4 | TABLE ACCESS STORAGE FULL FIRST ROWS| FXA_ZJGC_TEMP3 | 1 |
| 5 | SORT AGGREGATE | | 1 |
|* 6 | TABLE ACCESS STORAGE FULL | FXA_ZJGC_TEMP3 | 1 |
| 7 | SORT GROUP BY NOSORT | | 1 |
|* 8 | TABLE ACCESS STORAGE FULL | FXA_ZJGC_TEMP10 | 1 |
|* 9 | TABLE ACCESS STORAGE FULL FIRST ROWS| FXA_ZJGC_TEMP10 | 1 |
| 10 | SORT AGGREGATE | | 1 |
| 11 | NESTED LOOPS | | 1 |
| 12 | NESTED LOOPS | | 1 |
|* 13 | TABLE ACCESS STORAGE FULL | FXA_ZJGC_TEMP14 | 1 |
|* 14 | TABLE ACCESS BY INDEX ROWID | PURDOCHEADER | 1 |
|* 15 | INDEX UNIQUE SCAN | PURDOCHEADER_U | 1 |
|* 16 | INDEX UNIQUE SCAN | IOARELATBETWOCATDT_U | 1 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - storage("A"."FISCALYEAR"=:B3 AND "A"."POSTPERIOD"=:B2 AND "A"."COMPANYCOD
filter("A"."FISCALYEAR"=:B3 AND "A"."POSTPERIOD"=:B2 AND "A"."COMPANYCODE
3 - filter("ORDERNO"=:B1 AND "YEARFLAG"='l' AND "COMPANYCODE"=:B2 AND "CLIENT
4 - filter("ORDERNO"=:B1 AND "YEARFLAG"='c' AND "COMPANYCODE"=:B2 AND "CLIENT
6 - filter("ORDERNO"=:B1 AND ("YEARFLAG"='c' OR "YEARFLAG"='s') AND "COMPANYC
"CLIENT"=:B3)
8 - filter("ORDNO"=:B1 AND "CLIENT"=:B2)
9 - filter("ORDNO"=:B1 AND "CLIENT"=:B2)
13 - filter("B"."ORDNO"=:B1 AND "B"."PURDOCNO" IS NOT NULL AND "B"."CLIENT"=:B
"B"."COMPANYCODE"=:B3)
14 - filter("C"."COMPANYCODE"=:B1)
15 - access("B"."PURDOCNO"="C"."PURDOCNO" AND "C"."CLIENT"=:B1)
16 - access("D"."PURCHORDERCATETYPE"='02' AND "C"."ORDTYPE"="D"."ORDTYPE" AND
filter("D"."ORDTYPE" IS NOT NULL)
2- Using New Indices
--------------------
Plan hash value: 2211971372
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |
--------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | 23251 | 3474K|
| 1 | UPDATE | REP_ZJGC | | |
|* 2 | TABLE ACCESS STORAGE FULL | REP_ZJGC | 23251 | 3474K|
|* 3 | TABLE ACCESS BY INDEX ROWID | FXA_ZJGC_TEMP3 | 1 | 27 |
|* 4 | INDEX RANGE SCAN | IDX$$_00010012 | 1 | |
|* 5 | TABLE ACCESS BY INDEX ROWID | FXA_ZJGC_TEMP3 | 1 | 27 |
|* 6 | INDEX RANGE SCAN | IDX$$_00010012 | 1 | |
| 7 | SORT AGGREGATE | | 1 | 27 |
| 8 | INLIST ITERATOR | | | |
| 9 | TABLE ACCESS BY INDEX ROWID | FXA_ZJGC_TEMP3 | 1 | 27 |
|* 10 | INDEX RANGE SCAN | IDX$$_00010013 | 1 | |
| 11 | SORT GROUP BY NOSORT | | 1 | 22 |
| 12 | TABLE ACCESS BY INDEX ROWID | FXA_ZJGC_TEMP10 | 1 | 22 |
|* 13 | INDEX RANGE SCAN | IDX$$_00010014 | 1 | |
|* 14 | TABLE ACCESS BY INDEX ROWID | FXA_ZJGC_TEMP10 | 1 | 25 |
|* 15 | INDEX RANGE SCAN | IDX$$_00010015 | 1 | |
| 16 | SORT AGGREGATE | | 1 | 68 |
| 17 | NESTED LOOPS | | 1 | 68 |
| 18 | NESTED LOOPS | | 1 | 59 |
| 19 | TABLE ACCESS BY INDEX ROWID| FXA_ZJGC_TEMP14 | 1 | 38 |
|* 20 | INDEX RANGE SCAN | IDX$$_00010016 | 1 | |
|* 21 | INDEX RANGE SCAN | IDX$$_00010017 | 1 | 21 |
|* 22 | INDEX UNIQUE SCAN | IOARELATBETWOCATDT_U | 1 | 9 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - storage("A"."FISCALYEAR"=:B3 AND "A"."POSTPERIOD"=:B2 AND "A"."COMPANYCOD
filter("A"."FISCALYEAR"=:B3 AND "A"."POSTPERIOD"=:B2 AND "A"."COMPANYCODE
3 - filter("COMPANYCODE"=:B1 AND "CLIENT"=:B2)
4 - access("ORDERNO"=:B1 AND "YEARFLAG"='l')
5 - filter("COMPANYCODE"=:B1 AND "CLIENT"=:B2)
6 - access("ORDERNO"=:B1 AND "YEARFLAG"='c')
10 - access("ORDERNO"=:B1 AND ("YEARFLAG"='c' OR "YEARFLAG"='s') AND "CLIENT"=
"COMPANYCODE"=:B3)
13 - access("ORDNO"=:B1 AND "CLIENT"=:B2)
14 - filter("CLIENT"=:B1)
15 - access("ORDNO"=:B1)
20 - access("B"."CLIENT"=:B1 AND "B"."ORDNO"=:B2 AND "B"."COMPANYCODE"=:B3)
filter("B"."PURDOCNO" IS NOT NULL)
21 - access("C"."CLIENT"=:B1 AND "C"."COMPANYCODE"=:B2 AND "B"."PURDOCNO"="C".
22 - access("D"."PURCHORDERCATETYPE"='02' AND "C"."ORDTYPE"="D"."ORDTYPE" AND
"D"."CLIENT"=:B1)
filter("D"."ORDTYPE" IS NOT NULL)
-------------------------------------------------------------------------------
Object ID : 285266
Schema Name: JC800
SQL ID : 2jz5hasg203rw
SQL Text : select apmgogetpo2_.APMGoGetPointsID as APMGoGet1_,
apmgogetpo2_.pasBefPortShow as pasBefPo2_, apmgogetpo2_.yieldly
as yieldly, apmgogetpo2_.pasAftPortShow as pasAftPo4_,
apmgogetpo2_.productLine as productL5_,
apmgogetpo2_.showOutTimID as showOutT6_,
apmgogetpo2_.collectionAddress as collecti7_,
apmgogetpo2_.passTimName as passTimN8_,
apmgogetpo2_.pasBefWorkShow as pasBefWo9_, apmgogetpo2_.seqNO as
seqNO, apmgogetpo2_.pasAftWorkShow as pasAftW11_,
apmgogetpo2_.pasTimWorkShow as pasTimW12_, apmgogetpo2_.client
as client, apmgogetpo2_.pasTimPortShow as pasTimP14_,
apmgogetpo2_.plant as plant, remplantyp4_.structureTypeNam as
x0_0_, apmactuals0_.CpMaterialNO as x1_0_, mmrgenmtlt6_.mtlDes
as x2_0_, mmrplantmt7_.configuralbeMtl as x3_0_,
apmactuals0_.fatherMateSeqNO as x4_0_, apmactuals1_.scanTime as
x5_0_, apmgogetpo2_.APMGoGetPointsID as x6_0_,
apmactuals0_.planSeqNO as x7_0_, apmactuals1_.scanDate as x8_0_,
apmactuals0_.productType as x9_0_ from APMActualSeqDataHeader
apmactuals0_, APMActualSeqDataItem apmactuals1_, APMGoGetPoints
apmgogetpo2_, BDMWorkCenterHeader bdmworkcen3_, REMPlanTyp
remplantyp4_, MMRGenMtl mmrgenmtl5_, MMRGenMtlTrl mmrgenmtlt6_,
MMRPlantMtl mmrplantmt7_ where (apmactuals0_.client=apmactuals1_.
client )and(apmactuals0_.actualSeqNO=apmactuals1_.actualSeqNO
)and(apmactuals0_.productLine=apmactuals1_.productLine
)and(apmactuals0_.client=apmgogetpo2_.client
)and(bdmworkcen3_.workCenter=apmgogetpo2_.collectionAddress
)and(bdmworkcen3_.plant=apmgogetpo2_.plant
)and(apmactuals0_.factory=bdmworkcen3_.plant
)and(apmactuals0_.client=bdmworkcen3_.client
)and(bdmworkcen3_.objectID=apmactuals1_.scanPoint
)and(apmactuals0_.styleID=remplantyp4_.structureType(+))and(apmac
tuals0_.client=remplantyp4_.client(+))and(apmactuals0_.CpMaterial
NO=mmrgenmtl5_.mtlNO(+))and(mmrgenmtl5_.MMRGenMtlID=mmrgenmtlt6_.
MMRGenMtlID(+))and(apmactuals0_.client=mmrgenmtl5_.client(+))and(
apmactuals0_.CpMaterialNO=mmrplantmt7_.mtlNO(+))and(apmactuals0_.
client=mmrplantmt7_.client(+))and(apmactuals0_.factory=mmrplantmt
7_.plant(+))and(apmactuals0_.client='800'
)and(mmrgenmtlt6_.language='zh_CN'
)and(apmactuals0_.factory='001' )and(to_char(apmactuals1_.scanDat
e , 'yyyy-MM-dd')>='2017-01-05' )and(apmgogetpo2_.yieldly='P2'
)and(nvl(apmactuals0_.purOrgBlock , 'N')='N'
)and(apmactuals0_.fatherMateSeqNO is not null ) order by
apmactuals1_.scanTime desc , SUBSTR(apmactuals0_.fatherMateSeqNO
, length(apmactuals0_.fatherMateSeqNO)-4)desc
-------------------------------------------------------------------------------
FINDINGS SECTION (4 findings)
-------------------------------------------------------------------------------
1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
为此语句找到了性能更好的执行计划。
SQL profile 未自动创建, 因为经验证可获得的收益太少。
Recommendation (estimated benefit: 28.81%)
------------------------------------------
- 考虑接受推荐的 SQL 概要文件。
execute dbms_sqltune.accept_sql_profile(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285266, task_owner =>
'SYS', replace => TRUE);
Validation results
------------------
已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
则另一计划可能只执行了一部分。
Original Plan With SQL Profile % Improved
------------- ---------------- ----------
Completion Status: COMPLETE COMPLETE
Elapsed Time (s): 1.500657 1.156117 22.95 %
CPU Time (s): 1.497771 1.146825 23.43 %
User I/O Time (s): 0 0
Buffer Gets: 362807 258250 28.81 %
Physical Read Requests: 0 0
Physical Write Requests: 0 0
Physical Read Bytes: 0 0
Physical Write Bytes: 0 0
Rows Processed: 28391 28391
Fetches: 28391 28391
Executions: 1 1
2- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 76.11%)
------------------------------------------
- 考虑运行访问指导以改进物理方案设计或者创建推荐的索引。如果选择创建推荐的索引, 请考虑删除索引
"JC800"."BDMWORKCENTERHEADER_WKC", 因为它是推荐的索引的前缀。
create index JC800.IDX$$_00010001 on JC800.BDMWORKCENTERHEADER("WORKCENTER"
,"PLANT");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010002 on JC800.APMACTUALSEQDATAITEM(TO_CHAR("SC
ANDATE",'yyyy-MM-dd'));
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
3- Restructure SQL finding (see plan 1 in explain plans section)
----------------------------------------------------------------
谓词 TO_CHAR("APMACTUALS1_"."SCANDATE",'yyyy-MM-dd')>='2017-01-05' (在执行计划的行 ID
13 处使用) 包含索引列 "SCANDATE" 的表达式。此表达式使优化程序无法选择表 "JC800"."APMACTUALSEQDATAITEM"
的索引。
Recommendation
--------------
- 将谓词重写为等价型以便使用索引。或者, 对此表达式创建基于函数的索引。
4- Alternative Plan Finding
---------------------------
通过搜索系统的实时和历史性能数据找到了此语句的某些替代执行计划。
The following table lists these plans ranked by their average elapsed time.
See section "ALTERNATIVE PLANS SECTION" for detailed information on each
plan.
id plan hash last seen elapsed (s) origin note
-- ---------- -------------------- ------------ --------------- --------------
1 4104233932 2017-02-15/00:00:14 1.617 Cursor Cache original plan
2 3793614319 2017-02-15/00:02:14 1.680 Cursor Cache
Information
-----------
- 根据每次执行的用时, 原始计划可能具有最佳性能。但是, 如果您知道某个替代计划优于原始计划, 可以为该替代计划创建 SQL 计划基线。这将指示
Oracle 优化程序在将来优先于任何其他选择来选取它。
execute dbms_sqltune.create_sql_plan_baseline(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285266, owner_name =>
'SYS', plan_hash_value => xxxxxxxx);
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original With Adjusted Cost
------------------------------
Plan hash value: 4104233932
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 11684 |
| 1 | SORT ORDER BY | | 11684 |
|* 2 | HASH JOIN | | 11684 |
|* 3 | HASH JOIN | | 11684 |
|* 4 | HASH JOIN OUTER | | 11685 |
| 5 | NESTED LOOPS OUTER | | 11685 |
| 6 | NESTED LOOPS | | 11685 |
| 7 | NESTED LOOPS | | 5076 |
| 8 | NESTED LOOPS | | 3 |
| 9 | TABLE ACCESS BY INDEX ROWID| APMGOGETPOINTS | 3 |
|* 10 | INDEX RANGE SCAN | APMGOGETPOINTS_U | 3 |
|* 11 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1 |
|* 12 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1 |
|* 13 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 1689 |
|* 14 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 2 |
|* 15 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1 |
| 16 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP | 1 |
|* 17 | INDEX UNIQUE SCAN | REMPLANTYP_U | 1 |
|* 18 | TABLE ACCESS STORAGE FULL | MMRPLANTMTL | 179K|
| 19 | VIEW | index$_join$_006 | 206K|
|* 20 | HASH JOIN | | |
| 21 | INDEX STORAGE FAST FULL SCAN | SYS_C0043755 | 206K|
|* 22 | INDEX STORAGE FAST FULL SCAN | MMRGENMTL_T | 206K|
|* 23 | TABLE ACCESS STORAGE FULL | MMRGENMTLTRL | 203K|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("MMRGENMTL5_"."MMRGENMTLID"="MMRGENMTLT6_"."MMRGENMTLID")
3 - access("APMACTUALS0_"."CPMATERIALNO"="MMRGENMTL5_"."MTLNO" AND
"APMACTUALS0_"."CLIENT"="MMRGENMTL5_"."CLIENT")
4 - access("APMACTUALS0_"."CPMATERIALNO"="MMRPLANTMT7_"."MTLNO"(+) AND
"APMACTUALS0_"."CLIENT"="MMRPLANTMT7_"."CLIENT"(+) AND "APMACTUALS
10 - access("APMGOGETPO2_"."CLIENT"='800' AND "APMGOGETPO2_"."PLANT"='001' AND
11 - filter("BDMWORKCEN3_"."PLANT"='001' AND "BDMWORKCEN3_"."CLIENT"='800')
12 - access("BDMWORKCEN3_"."WORKCENTER"="APMGOGETPO2_"."COLLECTIONADDRESS")
13 - access("BDMWORKCEN3_"."OBJECTID"="APMACTUALS1_"."SCANPOINT" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANDATE"),'yyyy-MM-dd')
"APMACTUALS1_"."CLIENT"='800')
14 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
15 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - access("REMPLANTYP4_"."CLIENT"(+)='800' AND "APMACTUALS0_"."STYLEID"="REM
18 - storage("MMRPLANTMT7_"."PLANT"(+)='001' AND "MMRPLANTMT7_"."CLIENT"(+)='8
filter("MMRPLANTMT7_"."PLANT"(+)='001' AND "MMRPLANTMT7_"."CLIENT"(+)='80
20 - access(ROWID=ROWID)
22 - storage("MMRGENMTL5_"."CLIENT"='800')
filter("MMRGENMTL5_"."CLIENT"='800')
23 - storage("MMRGENMTLT6_"."LANGUAGE"='zh_CN')
filter("MMRGENMTLT6_"."LANGUAGE"='zh_CN')
2- Using SQL Profile
--------------------
Plan hash value: 3592701390
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 181 |
| 1 | SORT ORDER BY | | 181 |
|* 2 | HASH JOIN | | 181 |
| 3 | NESTED LOOPS OUTER | | 181 |
| 4 | NESTED LOOPS | | 181 |
| 5 | NESTED LOOPS OUTER | | 181 |
| 6 | NESTED LOOPS | | 181 |
| 7 | NESTED LOOPS | | 539 |
| 8 | NESTED LOOPS | | 1 |
| 9 | TABLE ACCESS BY INDEX ROWID| APMGOGETPOINTS | 1 |
|* 10 | INDEX RANGE SCAN | APMGOGETPOINTS_U | 1 |
|* 11 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1 |
|* 12 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1 |
|* 13 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 469 |
|* 14 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1 |
|* 15 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1 |
| 16 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP | 1 |
|* 17 | INDEX UNIQUE SCAN | REMPLANTYP_U | 1 |
| 18 | TABLE ACCESS BY INDEX ROWID | MMRGENMTL | 1 |
|* 19 | INDEX UNIQUE SCAN | MMRGENMTL_U | 1 |
| 20 | TABLE ACCESS BY INDEX ROWID | MMRPLANTMTL | 1 |
|* 21 | INDEX UNIQUE SCAN | MMRPLANTMTL_U | 1 |
|* 22 | TABLE ACCESS STORAGE FULL | MMRGENMTLTRL | 203K|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("MMRGENMTL5_"."MMRGENMTLID"="MMRGENMTLT6_"."MMRGENMTLID")
10 - access("APMGOGETPO2_"."CLIENT"='800' AND "APMGOGETPO2_"."PLANT"='001' AND
"APMGOGETPO2_"."YIELDLY"='P2')
11 - filter("BDMWORKCEN3_"."PLANT"='001' AND "BDMWORKCEN3_"."CLIENT"='800')
12 - access("BDMWORKCEN3_"."WORKCENTER"="APMGOGETPO2_"."COLLECTIONADDRESS")
13 - access("BDMWORKCEN3_"."OBJECTID"="APMACTUALS1_"."SCANPOINT" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANDATE"),'yyyy-MM-dd')
"APMACTUALS1_"."CLIENT"='800')
14 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
15 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - access("REMPLANTYP4_"."CLIENT"(+)='800' AND "APMACTUALS0_"."STYLEID"="REM
E"(+))
19 - access("APMACTUALS0_"."CPMATERIALNO"="MMRGENMTL5_"."MTLNO" AND "MMRGENMTL
21 - access("APMACTUALS0_"."CPMATERIALNO"="MMRPLANTMT7_"."MTLNO"(+) AND
"MMRPLANTMT7_"."PLANT"(+)='001' AND "MMRPLANTMT7_"."CLIENT"(+)='80
22 - storage("MMRGENMTLT6_"."LANGUAGE"='zh_CN')
filter("MMRGENMTLT6_"."LANGUAGE"='zh_CN')
3- Using New Indices
--------------------
Plan hash value: 2315716752
--------------------------------------------------------------------------------
| Id | Operation | Name | Row
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | SORT ORDER BY | |
| 2 | NESTED LOOPS OUTER | |
| 3 | NESTED LOOPS | |
| 4 | NESTED LOOPS | |
| 5 | NESTED LOOPS OUTER | |
| 6 | NESTED LOOPS | |
| 7 | NESTED LOOPS | |
| 8 | NESTED LOOPS | |
| 9 | TABLE ACCESS BY INDEX ROWID | APMGOGETPOINTS |
|* 10 | INDEX RANGE SCAN | APMGOGETPOINTS_U |
|* 11 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER |
|* 12 | INDEX RANGE SCAN | IDX$$_00010001 |
| 13 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAITEM |
| 14 | BITMAP CONVERSION TO ROWIDS | |
| 15 | BITMAP AND | |
| 16 | BITMAP CONVERSION FROM ROWIDS| |
| 17 | SORT ORDER BY | |
|* 18 | INDEX RANGE SCAN | IDX$$_00010002 | 2
| 19 | BITMAP CONVERSION FROM ROWIDS| |
|* 20 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_SP | 2
|* 21 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER |
|* 22 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U |
| 23 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP |
|* 24 | INDEX UNIQUE SCAN | REMPLANTYP_U |
| 25 | TABLE ACCESS BY INDEX ROWID | MMRGENMTL |
|* 26 | INDEX UNIQUE SCAN | MMRGENMTL_U |
|* 27 | INDEX RANGE SCAN | MMRGENMTLTRL_0 |
| 28 | TABLE ACCESS BY INDEX ROWID | MMRPLANTMTL |
|* 29 | INDEX UNIQUE SCAN | MMRPLANTMTL_U |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
10 - access("APMGOGETPO2_"."CLIENT"='800' AND "APMGOGETPO2_"."PLANT"='001' AND
"APMGOGETPO2_"."YIELDLY"='P2')
11 - filter("BDMWORKCEN3_"."CLIENT"='800')
12 - access("BDMWORKCEN3_"."WORKCENTER"="APMGOGETPO2_"."COLLECTIONADDRESS" AND
"BDMWORKCEN3_"."PLANT"='001')
18 - access("APMACTUALSEQDATAITEM"."qsmmix_VCol_5001">='2017-01-05')
filter("APMACTUALSEQDATAITEM"."qsmmix_VCol_5001">='2017-01-05')
20 - access("BDMWORKCEN3_"."OBJECTID"="APMACTUALS1_"."SCANPOINT" AND "APMACTUA
21 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
22 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
24 - access("REMPLANTYP4_"."CLIENT"(+)='800' AND "APMACTUALS0_"."STYLEID"="REM
))
26 - access("APMACTUALS0_"."CPMATERIALNO"="MMRGENMTL5_"."MTLNO" AND "MMRGENMTL
27 - access("MMRGENMTL5_"."MMRGENMTLID"="MMRGENMTLT6_"."MMRGENMTLID" AND
"MMRGENMTLT6_"."LANGUAGE"='zh_CN')
29 - access("APMACTUALS0_"."CPMATERIALNO"="MMRPLANTMT7_"."MTLNO"(+) AND "MMRPL
AND "MMRPLANTMT7_"."CLIENT"(+)='800')
-------------------------------------------------------------------------------
ALTERNATIVE PLANS SECTION
-------------------------------------------------------------------------------
Plan 2
------
Plan Origin :Cursor Cache
Plan Hash Value :3793614319
Executions :862
Elapsed Time :1.680 sec
CPU Time :1.667 sec
Buffer Gets :361758
Disk Reads :0
Disk Writes :0
Notes:
1. Statistics shown are averaged over multiple executions.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4381
| 1 | SORT ORDER BY | | 4381
| 2 | NESTED LOOPS OUTER | | 4381
|* 3 | HASH JOIN | | 4381
|* 4 | HASH JOIN | | 4381
|* 5 | HASH JOIN OUTER | | 4381
| 6 | NESTED LOOPS | |
| 7 | NESTED LOOPS | | 4381
| 8 | NESTED LOOPS | | 4381
| 9 | NESTED LOOPS | | 1
| 10 | TABLE ACCESS BY INDEX ROWID| APMGOGETPOINTS | 1
|* 11 | INDEX RANGE SCAN | APMGOGETPOINTS_U | 1
|* 12 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1
|* 13 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1
|* 14 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3815
|* 15 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1
|* 16 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1
|* 17 | TABLE ACCESS STORAGE FULL | MMRPLANTMTL | 179K
| 18 | VIEW | index$_join$_006 | 206K
|* 19 | HASH JOIN | |
| 20 | INDEX STORAGE FAST FULL SCAN | SYS_C0043755 | 206K
|* 21 | INDEX STORAGE FAST FULL SCAN | MMRGENMTL_T | 206K
|* 22 | TABLE ACCESS STORAGE FULL | MMRGENMTLTRL | 203K
| 23 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP | 1
|* 24 | INDEX UNIQUE SCAN | REMPLANTYP_U | 1
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("MMRGENMTL5_"."MMRGENMTLID"="MMRGENMTLT6_"."MMRGENMTLID")
4 - access("APMACTUALS0_"."CPMATERIALNO"="MMRGENMTL5_"."MTLNO" AND
"APMACTUALS0_"."CLIENT"="MMRGENMTL5_"."CLIENT")
5 - access("APMACTUALS0_"."CPMATERIALNO"="MMRPLANTMT7_"."MTLNO"(+) AND
"APMACTUALS0_"."CLIENT"="MMRPLANTMT7_"."CLIENT"(+) AND "APMACTUALS
11 - access("APMGOGETPO2_"."CLIENT"='800' AND "APMGOGETPO2_"."PLANT"='001' AND
12 - filter("BDMWORKCEN3_"."PLANT"='001' AND "BDMWORKCEN3_"."CLIENT"='800')
13 - access("BDMWORKCEN3_"."WORKCENTER"="APMGOGETPO2_"."COLLECTIONADDRESS")
14 - access("BDMWORKCEN3_"."OBJECTID"="APMACTUALS1_"."SCANPOINT" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANDATE"),'yyyy-MM-dd')
"APMACTUALS1_"."CLIENT"='800')
15 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
16 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
17 - storage("MMRPLANTMT7_"."PLANT"(+)='001' AND "MMRPLANTMT7_"."CLIENT"(+)='8
filter("MMRPLANTMT7_"."PLANT"(+)='001' AND "MMRPLANTMT7_"."CLIENT"(+)='80
19 - access(ROWID=ROWID)
21 - storage("MMRGENMTL5_"."CLIENT"='800')
filter("MMRGENMTL5_"."CLIENT"='800')
22 - storage("MMRGENMTLT6_"."LANGUAGE"='zh_CN')
filter("MMRGENMTLT6_"."LANGUAGE"='zh_CN')
24 - access("REMPLANTYP4_"."CLIENT"(+)='800' AND "APMACTUALS0_"."STYLEID"="REM
Plan 1
------
Plan Origin :Cursor Cache
Plan Hash Value :4104233932
Executions :1
Elapsed Time :1.617 sec
CPU Time :1.601 sec
Buffer Gets :360542
Disk Reads :0
Disk Writes :0
Notes:
1. Statistics shown are averaged over multiple executions.
2. The plan matches the original plan.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4381 |
| 1 | SORT ORDER BY | | 4381 |
|* 2 | HASH JOIN | | 4381 |
|* 3 | HASH JOIN | | 4381 |
|* 4 | HASH JOIN OUTER | | 4381 |
| 5 | NESTED LOOPS OUTER | | 4381 |
| 6 | NESTED LOOPS | | 4381 |
| 7 | NESTED LOOPS | | 4381 |
| 8 | NESTED LOOPS | | 1 |
| 9 | TABLE ACCESS BY INDEX ROWID| APMGOGETPOINTS | 1 |
|* 10 | INDEX RANGE SCAN | APMGOGETPOINTS_U | 1 |
|* 11 | TABLE ACCESS BY INDEX ROWID| BDMWORKCENTERHEADER | 1 |
|* 12 | INDEX RANGE SCAN | BDMWORKCENTERHEADER_WKC | 1 |
|* 13 | INDEX RANGE SCAN | APMACTUALSEQDATAITEM_T | 3815 |
|* 14 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1 |
|* 15 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1 |
| 16 | TABLE ACCESS BY INDEX ROWID | REMPLANTYP | 1 |
|* 17 | INDEX UNIQUE SCAN | REMPLANTYP_U | 1 |
|* 18 | TABLE ACCESS STORAGE FULL | MMRPLANTMTL | 179K|
| 19 | VIEW | index$_join$_006 | 206K|
|* 20 | HASH JOIN | | |
| 21 | INDEX STORAGE FAST FULL SCAN | SYS_C0043755 | 206K|
|* 22 | INDEX STORAGE FAST FULL SCAN | MMRGENMTL_T | 206K|
|* 23 | TABLE ACCESS STORAGE FULL | MMRGENMTLTRL | 203K|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("MMRGENMTL5_"."MMRGENMTLID"="MMRGENMTLT6_"."MMRGENMTLID")
3 - access("APMACTUALS0_"."CPMATERIALNO"="MMRGENMTL5_"."MTLNO" AND
"APMACTUALS0_"."CLIENT"="MMRGENMTL5_"."CLIENT")
4 - access("APMACTUALS0_"."CPMATERIALNO"="MMRPLANTMT7_"."MTLNO"(+) AND
"APMACTUALS0_"."CLIENT"="MMRPLANTMT7_"."CLIENT"(+) AND "APMACTUALS
10 - access("APMGOGETPO2_"."CLIENT"='800' AND "APMGOGETPO2_"."PLANT"='001' AND
11 - filter("BDMWORKCEN3_"."PLANT"='001' AND "BDMWORKCEN3_"."CLIENT"='800')
12 - access("BDMWORKCEN3_"."WORKCENTER"="APMGOGETPO2_"."COLLECTIONADDRESS")
13 - access("BDMWORKCEN3_"."OBJECTID"="APMACTUALS1_"."SCANPOINT" AND "APMACTUA
filter(TO_CHAR(INTERNAL_FUNCTION("APMACTUALS1_"."SCANDATE"),'yyyy-MM-dd')
"APMACTUALS1_"."CLIENT"='800')
14 - filter("APMACTUALS0_"."FATHERMATESEQNO" IS NOT NULL AND "APMACTUALS0_"."F
NVL("APMACTUALS0_"."PURORGBLOCK",'N')='N')
15 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
17 - access("REMPLANTYP4_"."CLIENT"(+)='800' AND "APMACTUALS0_"."STYLEID"="REM
18 - storage("MMRPLANTMT7_"."PLANT"(+)='001' AND "MMRPLANTMT7_"."CLIENT"(+)='8
filter("MMRPLANTMT7_"."PLANT"(+)='001' AND "MMRPLANTMT7_"."CLIENT"(+)='80
20 - access(ROWID=ROWID)
22 - storage("MMRGENMTL5_"."CLIENT"='800')
filter("MMRGENMTL5_"."CLIENT"='800')
23 - storage("MMRGENMTLT6_"."LANGUAGE"='zh_CN')
filter("MMRGENMTLT6_"."LANGUAGE"='zh_CN')
-------------------------------------------------------------------------------
Object ID : 285398
Schema Name: JC800
SQL ID : 9un6spcxthjbw
SQL Text : select apmactuals0_.planSeqNO as x0_0_, bdmworkcen2_.workCenter
as x1_0_ from APMActualSeqDataHeader apmactuals0_,
APMActualSeqDataItem apmactuals1_, BDMWorkCenterHeader
bdmworkcen2_ where (apmactuals0_.actualSeqNO=apmactuals1_.actualS
eqNO )and(apmactuals0_.productLine=apmactuals1_.productLine
)and(bdmworkcen2_.plant=apmactuals0_.factory
)and(apmactuals1_.scanPoint=bdmworkcen2_.objectID
)and(apmactuals1_.scanTime>=to_date('2017-02-14' ,
'yyyy-mm-dd'))and(apmactuals0_.client='800'
)and(apmactuals1_.client='800' )and(bdmworkcen2_.client='800' )
group by apmactuals0_.productLine , apmactuals0_.actualSeqNO ,
apmactuals0_.planSeqNO , bdmworkcen2_.workCenter ,
apmactuals0_.client having (count(1)>1 ) order by
apmactuals0_.planSeqNO
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------
1- Index Finding (see explain plans section below)
--------------------------------------------------
通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 68.67%)
------------------------------------------
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010042 on JC800.APMACTUALSEQDATAITEM("CLIENT","S
CANTIME");
- 考虑运行可以改进物理方案设计的访问指导或者创建推荐的索引。
create index JC800.IDX$$_00010043 on JC800.BDMWORKCENTERHEADER("OBJECTID");
Rationale
---------
创建推荐的索引可以显著地改进此语句的执行计划。但是, 使用典型的 SQL 工作量运行 "访问指导"
可能比单个语句更可取。通过这种方法可以获得全面的索引建议案, 包括计算索引维护的开销和附加的空间消耗。
2- Alternative Plan Finding
---------------------------
通过搜索系统的实时和历史性能数据找到了此语句的某些替代执行计划。
The following table lists these plans ranked by their average elapsed time.
See section "ALTERNATIVE PLANS SECTION" for detailed information on each
plan.
id plan hash last seen elapsed (s) origin note
-- ---------- -------------------- ------------ --------------- --------------
1 360058868 2017-02-15/21:00:26 0.113 AWR original plan
2 1841302870 2017-02-15/21:00:26 0.172 AWR
Information
-----------
- 根据每次执行的用时, 原始计划可能具有最佳性能。但是, 如果您知道某个替代计划优于原始计划, 可以为该替代计划创建 SQL 计划基线。这将指示
Oracle 优化程序在将来优先于任何其他选择来选取它。
execute dbms_sqltune.create_sql_plan_baseline(task_name =>
'SYS_AUTO_SQL_TUNING_TASK', object_id => 285398, owner_name =>
'SYS', plan_hash_value => xxxxxxxx);
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
Plan hash value: 360058868
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 |
|* 1 | FILTER | | |
| 2 | SORT GROUP BY | | 1 |
| 3 | NESTED LOOPS | | |
| 4 | NESTED LOOPS | | 1 |
|* 5 | HASH JOIN | | 1 |
|* 6 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 1 |
|* 7 | INDEX RANGE SCAN | APMPRODUCETIMESTAMP_SCTIME | 1 |
|* 8 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER | 2977 |
|* 9 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1 |
|* 10 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(COUNT(*)>1)
5 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN2_"."OBJECTID")
6 - filter("APMACTUALS1_"."CLIENT"='800')
7 - access("APMACTUALS1_"."SCANTIME">=TO_DATE(' 2017-02-14 00:00:00', 'syyyy-
8 - storage("BDMWORKCEN2_"."CLIENT"='800')
filter("BDMWORKCEN2_"."CLIENT"='800')
9 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
10 - filter("BDMWORKCEN2_"."PLANT"="APMACTUALS0_"."FACTORY")
2- Using New Indices
--------------------
Plan hash value: 3171338220
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | By
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 |
|* 1 | FILTER | | |
| 2 | SORT GROUP BY | | 1 |
| 3 | NESTED LOOPS | | |
| 4 | NESTED LOOPS | | 1 |
| 5 | NESTED LOOPS | | 1 |
| 6 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 1 |
|* 7 | INDEX RANGE SCAN | IDX$$_00010042 | 1 |
| 8 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAHEADER | 1 |
|* 9 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1 |
|* 10 | INDEX RANGE SCAN | IDX$$_00010043 | 1 |
|* 11 | TABLE ACCESS BY INDEX ROWID | BDMWORKCENTERHEADER | 1 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(COUNT(*)>1)
7 - access("APMACTUALS1_"."CLIENT"='800' AND "APMACTUALS1_"."SCANTIME">=TO_DA
00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "APMACTUALS1_"."SCANTIME"
9 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
10 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN2_"."OBJECTID")
11 - filter("BDMWORKCEN2_"."CLIENT"='800' AND "BDMWORKCEN2_"."PLANT"="APMACTUA
-------------------------------------------------------------------------------
ALTERNATIVE PLANS SECTION
-------------------------------------------------------------------------------
Plan 2
------
Plan Origin :AWR
Plan Hash Value :1841302870
Executions :717
Elapsed Time :0.172 sec
CPU Time :0.125 sec
Buffer Gets :48257
Disk Reads :59
Disk Writes :0
Notes:
1. Statistics shown are averaged over multiple executions.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 |
|* 1 | FILTER | | |
| 2 | SORT GROUP BY | | 1 |
| 3 | NESTED LOOPS | | |
| 4 | NESTED LOOPS | | 1 |
|* 5 | HASH JOIN | | 1 |
|* 6 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER | 2977 |
|* 7 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 1 |
|* 8 | INDEX RANGE SCAN | APMPRODUCETIMESTAMP_SCTIME | 1 |
|* 9 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1 |
|* 10 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(COUNT(*)>1)
5 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN2_"."OBJECTID")
6 - storage("BDMWORKCEN2_"."CLIENT"='800')
filter("BDMWORKCEN2_"."CLIENT"='800')
7 - filter("APMACTUALS1_"."CLIENT"='800')
8 - access("APMACTUALS1_"."SCANTIME">=TO_DATE(' 2017-02-14 00:00:00', 'syyyy-
9 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
10 - filter("BDMWORKCEN2_"."PLANT"="APMACTUALS0_"."FACTORY")
Plan 1
------
Plan Origin :AWR
Plan Hash Value :360058868
Executions :3
Elapsed Time :0.113 sec
CPU Time :0.084 sec
Buffer Gets :23502
Disk Reads :0
Disk Writes :0
Notes:
1. Statistics shown are averaged over multiple executions.
2. The plan matches the original plan.
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 |
|* 1 | FILTER | | |
| 2 | SORT GROUP BY | | 1 |
| 3 | NESTED LOOPS | | |
| 4 | NESTED LOOPS | | 1 |
|* 5 | HASH JOIN | | 1 |
|* 6 | TABLE ACCESS BY INDEX ROWID| APMACTUALSEQDATAITEM | 1 |
|* 7 | INDEX RANGE SCAN | APMPRODUCETIMESTAMP_SCTIME | 1 |
|* 8 | TABLE ACCESS STORAGE FULL | BDMWORKCENTERHEADER | 2977 |
|* 9 | INDEX UNIQUE SCAN | APMACTUALSEQDATAHEADER_U | 1 |
|* 10 | TABLE ACCESS BY INDEX ROWID | APMACTUALSEQDATAHEADER | 1 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(COUNT(*)>1)
5 - access("APMACTUALS1_"."SCANPOINT"="BDMWORKCEN2_"."OBJECTID")
6 - filter("APMACTUALS1_"."CLIENT"='800')
7 - access("APMACTUALS1_"."SCANTIME">=TO_DATE(' 2017-02-14 00:00:00', 'syyyy-
8 - storage("BDMWORKCEN2_"."CLIENT"='800')
filter("BDMWORKCEN2_"."CLIENT"='800')
9 - access("APMACTUALS0_"."ACTUALSEQNO"="APMACTUALS1_"."ACTUALSEQNO" AND
"APMACTUALS0_"."PRODUCTLINE"="APMACTUALS1_"."PRODUCTLINE" AND "APM
10 - filter("BDMWORKCEN2_"."PLANT"="APMACTUALS0_"."FACTORY")
-------------------------------------------------------------------------------
Object ID : 285351
Schema Name: JC800
SQL ID : 39y4wqyrwtrm7
SQL Text : insert into mldtemp2 (p1,p2) values (:1 ,:2 )
-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------
1- Statistics Finding
---------------------
尚未分析表 "JC800"."MLDTEMP2"。
Recommendation
--------------
- 考虑收集此表的优化程序统计信息。
execute dbms_stats.gather_table_stats(ownname => 'JC800', tabname =>
'MLDTEMP2', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
method_opt => 'FOR ALL COLUMNS SIZE AUTO');
Rationale
---------
为了选择好的执行计划, 优化程序需要此表的最新统计信息。
-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------
1- Original
-----------
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 8168 | 31M| 29 (0)| 00:00
| 1 | LOAD TABLE CONVENTIONAL | MLDTEMP2 | | | |
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7569309/viewspace-2133671/
,如需转载,请注明出处,否则将追究法律责任。