Article - CS265436
Indexes needed on ObjectHistory and LifeCycleHistory tables in Windchill PDMLink
Modified: 04-Aug-2025
Applies To
- Windchill PDMLink 11.0 to 12.0
Description
- Indexes needed on ObjectHistory and LifeCycleHistory tables
- Very Slow Performance in loading Structure of any non-latest iterations of WTParts
- Poorly performing SQLs identified in Oracle diagnostics report:
-
SELECT A0.idA3A2ownership,A0.idA3view,A0.idA3domainRef,A0.entrySetadHocAcl,A0.versionLevelA2versionInfo,A0.branchIditerationInfo,A0.securityLabels,A0.idA3containerReference,A0.classnamekeydomainRef,A0.idA3masterReference,A0.idA2A2,A0.statestate,A0.branchIdA2typeDefinitionRefe,A0.typeadministrativeLock,A0.classnamekeycontainerReferen,A0.statecheckoutInfo,A0.versionIdA2versionInfo,A0.blob$entrySetadHocAcl,A0.classnamekeyA2ownership,A0.classnameA2A2,'wt.part.WTPart' classnameA2A2,A0.idA2A2 FROM WTPart A0 WHERE ((A0.idA3masterReference IN (SELECT /*+ CARDINALITY(wtot 500) */ * FROM TABLE(cast(:1 as PDMLINK2.TABLE_OF_NUMBER)) wtot WHERE (ROWNUM > 0) AND (column_value IS NOT NULL))) AND (A0.classnamekeycontainerReferen <> :2 ) AND (A0.branchIditerationInfo IN ( SELECT B0.branchIditerationInfo FROM WTPart B0,ObjectHistory B1,LifeCycleHistory B2 WHERE ((B2.idA2A2 = B1.idA3B5) AND (B0.idA2A2 = B1.idA3A5) AND (B2.createStampA2 < TO_DATE(:3 ,:4 )) AND (B2.action = :5 ) AND (B2.state = :6 )))) AND (A0.latestiterationInfo = :7 ) AND ((A0.statecheckoutInfo <> :8 ) AND (A0.idA3view = :9 ) OR (A0.viewIsNull IS NULL )) AND (A0.variation1 IS NULL ) AND (A0.variation2 IS NULL )) AND (A0.markForDeleteA2 = 0) UNION ALL SELECT A0.idA3A2ownership,A0.idA3view,A0.idA3domainRef,A0.entrySetadHocAcl,A0.versionLevelA2versionInfo,A0.branchIditerationInfo,A0.securityLabels,A0.idA3containerReference,A0.classnamekeydomainRef,A0.idA3masterReference,A0.idA2A2,A0.statestate,A0.branchIdA2typeDefinitionRefe,A0.typeadministrativeLock,A0.classnamekeycontainerReferen,A0.statecheckoutInfo,A0.versionIdA2versionInfo,A0.blob$entrySetadHocAcl,A0.classnamekeyA2ownership,A0.classnameA2A2,'com.ptc.windchill.mpml.resource.MPMTooling' classnameA2A2,A0.idA2A2 FROM MPMTooling A0 WHERE ((A0.idA3masterReference IN (SELECT /*+ CARDINALITY(wtot 500) */ * FROM TABLE(cast(:10 as PDMLINK2.TABLE_OF_NUMBER)) wtot WHERE (ROWNUM > 0) AND (column_value IS NOT NULL))) AND (A0.classnamekeycontainerReferen <> :11 ) AND (A0.branchIditerationInfo IN ( SELECT B0.branchIditerationInfo FROM WTPart B0,ObjectHistory B1,LifeCycleHistory B2 WHERE ((B2.idA2A2 = B1.idA3B5) AND (B0.idA2A2 = B1.idA3A5) AND (B2.createStampA2 < TO_DATE(:12 ,:13 )) AND (B2.action = :14 ) AND (B2.state = :15 )))) AND (A0.latestiterationInfo = :16 ) AND ((A0.statecheckoutInfo <> :17 ) AND (A0.idA3view = :18 ) OR (A0.viewIsNull IS NULL )) AND (A0.variation1 IS NULL ) AND (A0.variation2 IS NULL )) AND (A0.markForDeleteA2 = 0) UNION ALL SELECT A0.idA3A2ownership,A0.idA3view,A0.idA3domainRef,A0.entrySetadHocAcl,A0.versionLevelA2versionInfo,A0.branchIditerationInfo,A0.securityLabels,A0.idA3containerReference,A0.classnamekeydomainRef,A0.idA3masterReference,A0.idA2A2,A0.statestate,A0.branchIdA2typeDefinitionRefe,A0.typeadministrativeLock,A0.classnamekeycontainerReferen,A0.statecheckoutInfo,A0.versionIdA2versionInfo,A0.blob$entrySetadHocAcl,A0.classnamekeyA2ownership,A0.classnameA2A2,'com.ptc.windchill.mpml.resource.MPMWorkCenter' classnameA2A2,A0.idA2A2 FROM MPMWorkCenter A0 WHERE ((A0.idA3masterReference IN (SELECT /*+ CARDINALITY(wtot 500) */ * FROM TABLE(cast(:19 as PDMLINK2.TABLE_OF_NUMBER)) wtot WHERE (ROWNUM > 0) AND (column_value IS NOT NULL))) AND (A0.classnamekeycontainerReferen <> :20 ) AND (A0.branchIditerationInfo IN ( SELECT B0.branchIditerationInfo FROM WTPart B0,ObjectHistory B1,LifeCycleHistory B2 WHERE ((B2.idA2A2 = B1.idA3B5) AND (B0.idA2A2 = B1.idA3A5) AND (B2.createStampA2 < TO_DATE(:21 ,:22 )) AND (B2.action = :23 ) AND (B2.state = :24 )))) AND (A0.latestiterationInfo = :25 ) AND ((A0.statecheckoutInfo <> :26 ) AND (A0.idA3view = :27 ) OR (A0.viewIsNull IS NULL )) AND (A0.variation1 IS NULL ) AND (A0.variation2 IS NULL )) AND (A0.markForDeleteA2 = 0) UNION ALL SELECT A0.idA3A2ownership,A0.idA3view,A0.idA3domainRef,A0.entrySetadHocAcl,A0.versionLevelA2versionInfo,A0.branchIditerationInfo,A0.securityLabels,A0.idA3containerReference,A0.classnamekeydomainRef,A0.idA3masterReference,A0.idA2A2,A0.statestate,A0.branchIdA2typeDefinitionRefe,A0.typeadministrativeLock,A0.classnamekeycontainerReferen,A0.statecheckoutInfo,A0.versionIdA2versionInfo,A0.blob$entrySetadHocAcl,A0.classnamekeyA2ownership,A0.classnameA2A2,'com.ptc.windchill.mpml.resource.MPMPlant' classnameA2A2,A0.idA2A2 FROM MPMPlant A0 WHERE ((A0.idA3masterReference IN (SELECT /*+ CARDINALITY(wtot 500) */ * FROM TABLE(cast(:28 as PDMLINK2.TABLE_OF_NUMBER)) wtot WHERE (ROWNUM > 0) AND (column_value IS NOT NULL))) AND (A0.classnamekeycontainerReferen <> :29 ) AND (A0.branchIditerationInfo IN ( SELECT B0.branchIditerationInfo FROM WTPart B0,ObjectHistory B1,LifeCycleHistory B2 WHERE ((B2.idA2A2 = B1.idA3B5) AND (B0.idA2A2 = B1.idA3A5) AND (B2.createStampA2 < TO_DATE(:30 ,:31 )) AND (B2.action = :32 ) AND (B2.state = :33 )))) AND (A0.latestiterationInfo = :34 ) AND ((A0.statecheckoutInfo <> :35 ) AND (A0.idA3view = :36 ) OR (A0.viewIsNull IS NULL )) AND (A0.variation1 IS NULL ) AND (A0.variation2 IS NULL )) AND (A0.markForDeleteA2 = 0)
2.SELECT A0.blob$entrySetadHocAcl,A0.classnameA2A2,A0.branchIdA2typeDefinitionRefe, A0.idA3A2ownership,A0.idA2A2,A0.typeadministrativeLock,A0.classnamekeydomainRef, A0.securityLabels,A0.entrySetadHocAcl,A0.statestate,A0.idA3domainRef,A0.classnamekeyA2ownership,A0.classnameA2A2,A0.idA2A2 FROM WTPart A0,LifeCycleHistory A1,Ob jectHistory A2 WHERE ((A0.idA3masterReference IN (:1 )) AND (A0.classnamekeycontainerReferen <> :31 ) AND (((A0.statestate = :32 ) AND (A1.idA2A2 = A2.idA3B5) AND (A0.idA2A2 = A2.idA3 A5) AND (A1.action IN (:33 ,:34 ,:35 ,:36 ,:37 )) AND (A1.state = :38 ) AND (A0.modifyStampA2 <= TO_DATE(:39 ,:40 ))) OR ((A0.statestate = :41 ) AND (A1.idA2A2 = A2.idA3B5) AND (A0.idA2A2 = A2.idA3A5) AND (A1.action IN (:42 ,:43 ,:44 ,:45 ,:46 )) AND (A1.state = :47 ) AND (A0.modifyStampA2 <= TO_DATE(:48 ,:49 ))))) AND ((A0.markForDeleteA2 = 0) AND (A1.markForDeleteA2 = 0) AND (A2.markForDeleteA2= 0)) UNION ALL SELECT A0.blob$entrySetadHocAcl,A0.classnameA2A2,A0.branchIdA2ty peDefinitionRefe,A0.idA3A2ownership,A0.idA2A2,A0.typeadministrativeLock,A0.classnamekeydomainRef,A0.securityLabels,A0.entrySetadHocAcl,A0.statestate,A0.idA3doma inRef,A0.classnamekeyA2ownership,A0.classnameA2A2,A0.idA2A2 FROM ManufacturerPart A0,LifeCycleHistory A1,ObjectHistory A2 WHERE ((A0.idA3masterReference IN (:50 )) AND (A0.classnamekeycontainerReferen <> :80 ) AND (((A0.statestate = :81 ) AND (A1.idA2A2 = A2.idA3B5) AND (A0.idA2A2 = A2.idA3A5) AND (A1.action IN (:82 ,:83 ,:84 ,:85 ,: 86 )) AND (A1.state = :87 ) AND (A0.modifyStampA2 <= TO_DATE(:88 ,:89 ))) OR ((A0.statestate = :90 ) AND (A1.idA2A2 = A2.idA3B5) AND (A0.idA2A2 = A2.idA3A5) AND (A1.action IN (:91 ,:92 ,:93 ,:94 ,:95 )) AND (A1.state = :96 ) AND (A0.modifyStampA2 <= TO_DATE(:97 ,:98 ))))) AND ((A0.markForDeleteA2 = 0) AND (A1.markForDe leteA2 = 0) AND (A2.markForDeleteA2 = 0))
This is a printer-friendly version of Article 265436 and may be out of date. For the latest version click CS265436