![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
|
Id | Operation | Name | Rows Bytes |TempSpc| Cost (%CPU)| Time | --------------------------------------------------------------------------------------------------------------- 0 | SELECT STATEMENT | | 550K| 222M| | 150K (6)| 01:22:39 | * 1 | HASH JOIN RIGHT OUTER | | 550K| 222M| 36M| 150K (6)| 01:22:39 | 2 | INDEX FAST FULL SCAN | BKMAP_CUSTOMER_SITE_N02 | 1601K| 18M| | 75 (14)| 00:00:03 | * 3 | HASH JOIN OUTER | | 550K| 216M| 180M| 148K (6)| 01:21:13 | * 4 | HASH JOIN | | 550K| 173M| 157M| 117K (6)| 01:04:32 | * 5 | HASH JOIN RIGHT OUTER | | 550K| 151M| 17M| 82844 (8)| 00:45:25 | 6 | TABLE ACCESS FULL | BKMAP_MATERIAL_ITEM | 781K| 9162K| | 231 (19)| 00:00:08 | * 7 | HASH JOIN OUTER | | 550K| 144M| 130M| 80959 (8)| 00:44:23 | * 8 | HASH JOIN | | 550K| 124M| 150M| 66175 (7)| 00:36:17 | * 9 | HASH JOIN | | 820K| 140M| 17M| 50570 (8)| 00:27:44 | * 10 | HASH JOIN | | 310K| 13M| | 5205 (5)| 00:02:52 | * 11 | TABLE ACCESS FULL| BKMAP_ORG_TO_GEO_XREF | 3 27 | | 3 (0)| 00:00:01 | * 12 | TABLE ACCESS FULL| BKMAP_CONTRACT_HEADER | 5957K| 210M| | 5174 (5)| 00:02:51 | * 13 | TABLE ACCESS FULL | BKMAP_CONTRACT_LINE | 15M| 2012M| | 23742 (14)| 00:13:01 | 14 | TABLE ACCESS FULL | BKMAP_CONTRACT_REFERENCES | 15M| 866M| | 3799 (13)| 00:02:05 | 15 | TABLE ACCESS FULL | BKMAP_ITEM_INSTANCES | 13M| 512M| | 6873 (20)| 00:03:47 | 16 | TABLE ACCESS FULL | BKMAP_CONTRACT_LINE | 23M| 974M| | 20994 (3)| 00:11:31 | * 17 | TABLE ACCESS FULL | BKMAP_CONTRACT_LINE | 8009K| 618M| | 21715 (6)| 00:11:55 | |
#2
| |||
| |||
|
|
Hi, Sorry if this is a simple question. It may be relevant to all versions, but this one comes from 10.2.0.4 The statement reads from the BKMAP_CONTRACT_LINE 3 times in this statement all using full table scans, but the reported cost for each fts differs Is this usual? Is the difference in cost caused by dbms_xplan being aware of the likelihood that many of the rows will already been in the buffer cache (presumably from the largest fts - Id 13) I expected to see the same cost for each fts on the BKMAP_CONTRACT_LINE - hence the reason for my question thanks Craig ---------------------------------------------------------------------------*------------------------------------ | Id *| Operation * * * * * * * * | Name * * * * * * * * * * *| Rows | Bytes |TempSpc| Cost (%CPU)| Time * * | ---------------------------------------------------------------------------*------------------------------------ | * 0 | SELECT STATEMENT * * * * *| * * * * * * * * * * * * * | 550K| * 222M| * * * | * 150K *(6)| 01:22:39 | |* *1 | *HASH JOIN RIGHT OUTER * *| * * * * * * * * * * * * * | 550K| * 222M| * *36M| * 150K *(6)| 01:22:39 | | * 2 | * INDEX FAST FULL SCAN * *| BKMAP_CUSTOMER_SITE_N02 * | 1601K| * *18M| * * * | * *75 *(14)| 00:00:03 | |* *3 | * HASH JOIN OUTER * * * * | * * * * * * * * * * * * * | 550K| * 216M| * 180M| * 148K *(6)| 01:21:13 | |* *4 | * *HASH JOIN * * * * * * *| * * * * * * * * * * * * * | 550K| * 173M| * 157M| * 117K *(6)| 01:04:32 | |* *5 | * * HASH JOIN RIGHT OUTER | * * * * * * * ** * * * * | 550K| * 151M| * *17M| 82844 * (8)| 00:45:25 | | * 6 | * * *TABLE ACCESS FULL * *| BKMAP_MATERIAL_ITEM * * * | 781K| *9162K| * * * | * 231 *(19)| 00:00:08 | |* *7 | * * *HASH JOIN OUTER * * *| * * * * * ** * * * * * * | 550K| * 144M| * 130M| 80959 * (8)| 00:44:23 | |* *8 | * * * HASH JOIN * * * * * | * * * * ** * * * * * * * | 550K| * 124M| * 150M| 66175 * (7)| 00:36:17 | |* *9 | * * * *HASH JOIN * * * * *| * * * * * * * * * * * * * | 820K| * 140M| * *17M| 50570 * (8)| 00:27:44 | |* 10 | * * * * HASH JOIN * * * * | * * * * * * * * * * * * * | 310K| * *13M| * * * | *5205 * (5)| 00:02:52 | |* 11 | * * * * *TABLE ACCESS FULL| BKMAP_ORG_TO_GEO_XREF * * | * * 3 | * *27 | * * * | * * 3 * (0)| 00:00:01 | |* 12 | * * * * *TABLE ACCESS FULL| BKMAP_CONTRACT_HEADER * * | 5957K| * 210M| * * * | *5174 * (5)| 00:02:51 | |* 13 | * * * * TABLE ACCESS FULL | BKMAP_CONTRACT_LINE * * * | 15M| *2012M| * * * | 23742 *(14)| 00:13:01 | | *14 | * * * *TABLE ACCESS FULL *| BKMAP_CONTRACT_REFERENCES| 15M| * 866M| * * * | *3799 *(13)| 00:02:05 | | *15 | * * * TABLE ACCESS FULL * | BKMAP_ITEM_INSTANCES * * *| 13M| * 512M| * * * | *6873 *(20)| 00:03:47 | | *16 | * * TABLE ACCESS FULL * * | BKMAP_CONTRACT_LINE * ** | 23M| * 974M| * * * | 20994 * (3)| 00:11:31 | |* 17 | * *TABLE ACCESS FULL * * *| BKMAP_CONTRACT_LINE * ** | 8009K| * 618M| * * * | 21715 * (6)| 00:11:55 | ---------------------------------------------------------------------------*------------------------------------ |
#3
| |||
| |||
|
#4
| |||
| |||
|
|
hi, yes a single scan would be preferable, but given the statement, it doesn't seem possible Its more of a curiosity than anything else SELECT BKMAP_CONTRACT_LINE.LOAD_DATE, BKMAP_CONTRACT_LINE.LINE_NUMBER, BKMAP_CONTRACT_LINE.PARENT_LINE_ID, BKMAP_CONTRACT_LINE.CONTRACT_HEADER_ID, BKMAP_CONTRACT_LINE.STS_CODE, BKMAP_CONTRACT_LINE.LAST_UPDATE_DATE, BKMAP_CONTRACT_LINE.START_DATE, BKMAP_CONTRACT_LINE.END_DATE, BKMAP_CONTRACT_LINE.COVERAGE_CODE, BKMAP_CONTRACT_LINE.QUANTITY, BKMAP_CONTRACT_HEADER.CONTRACT_NUMBER, BKMAP_CONTRACT_HEADER.SCS_CODE, BKMAP_CONTRACT_LINE1.LINE_NUMBER, BKMAP_ITEM_INSTANCES.SERIAL_NUMBER, BKMAP_ITEM_INSTANCES.INSTALL_DATE, BKMAP_ITEM_INSTANCES.MARKETING_PART_NUMBER, BKMAP_MATERIAL_ITEM.PRODUCT_CODE, DECODE(BKMAP_CONTRACT_HEADER.SCS_CODE, 'WARRANTY', BKMAP_CONTRACT_REFERENCES.INSTALL_LOCATION_ID, 'SERVICE', BKMAP_CUSTOMER_SITE.PARTY_SITE_ID) AS LKP_PARTY_SITE, BKMAP_CONTRACT_REFERENCES.INSTANCE_ID, BKMAP_CONTRACT_LINE.CONTRACT_LINE_ID, BKMAP_CONTRACT_LINE.ATTRIBUTE1, BKMAP_CONTRACT_LINE.RELATED_OBJECT_TYPE, BKMAP_CUSTOMER_SITE.PARTY_SITE_ID, BKMAP_CONTRACT_REFERENCES.INSTALL_LOCATION_ID FROM BKMAP_CONTRACT_LINE, BKMAP_ORG_TO_GEO_XREF, BKMAP_CONTRACT_HEADER, BKMAP_CONTRACT_LINE BKMAP_CONTRACT_LINE1, BKMAP_CONTRACT_REFERENCES, BKMAP_ITEM_INSTANCES, BKMAP_MATERIAL_ITEM, BKMAP_CUSTOMER_SITE, (SELECT LINE.SHIP_TO_SITE_USE_ID, LINE.CONTRACT_LINE_ID FROM BKMAP_CONTRACT_LINE LINE WHERE LINE.PARENT_LINE_ID is null) SHIP WHERE BKMAP_CONTRACT_HEADER.CONTRACT_HEADER_ID = BKMAP_CONTRACT_LINE.CONTRACT_HEADER_ID AND BKMAP_CONTRACT_LINE.PARENT_LINE_ID = BKMAP_CONTRACT_LINE1.CONTRACT_LINE_ID AND BKMAP_CONTRACT_LINE.PARENT_LINE_ID = BKMAP_CONTRACT_LINE1.CONTRACT_LINE_ID AND BKMAP_ORG_TO_GEO_XREF.AUTHORING_ORG_ID = BKMAP_CONTRACT_HEADER.AUTHORING_ORG_ID AND BKMAP_CONTRACT_LINE.CONTRACT_HEADER_ID = BKMAP_CONTRACT_REFERENCES.CONTRACT_HEADER_ID AND BKMAP_CONTRACT_LINE.CONTRACT_LINE_ID = BKMAP_CONTRACT_REFERENCES.CONTRACT_LINE_ID AND BKMAP_CONTRACT_REFERENCES.INSTANCE_ID = BKMAP_ITEM_INSTANCES.INSTANCE_ID(+) AND BKMAP_ITEM_INSTANCES.INVENTORY_ITEM_ID = BKMAP_MATERIAL_ITEM.INVENTORY_ITEM_ID(+) AND BKMAP_CONTRACT_LINE.PARENT_LINE_ID = SHIP.CONTRACT_LINE_ID(+) AND SHIP.SHIP_TO_SITE_USE_ID = BKMAP_CUSTOMER_SITE.SITE_USE_ID(+) AND BKMAP_CONTRACT_LINE.PARENT_LINE_ID IS NOT NULL AND BKMAP_ORG_TO_GEO_XREF.SERVICE_GEO_ID = 'US' AND (BKMAP_CONTRACT_HEADER.SCS_CODE = 'WARRANTY' OR (BKMAP_CONTRACT_HEADER.STS_CODE IN ('ACTIVE', 'EXPIRED', 'HOLD', 'QA_HOLD', 'TERMINATED') AND BKMAP_CONTRACT_HEADER.SCS_CODE = 'SERVICE')); thanks Craig |
![]() |
| Thread Tools | |
| Display Modes | |
| |