Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Understanding Explain Plan

Anil KuppaJun 6 2016 — edited Jun 15 2016

Below is a statement and the generated explain plan:

UPDATE WIE_MATERIAL_TRANSACTIONS_INT WMTI

SET WMTI.INTERFACE_STATUS_CODE=:B4 ,

LAST_UPDATED_BY =FND_GLOBAL.WHO_USER_NAME,

LAST_UPDATE_DATE =SYSDATE,

INV_TRANSACTION_ID =

(SELECT TRANSACTION_ID

FROM INV_MATERIAL_TXNS IMT

WHERE IMT.TRANSACTION_SET_ID =WMTI.INV_TRANSACTION_HEADER_ID

AND IMT.ORIGINAL_TRANSACTION_TEMP_ID=WMTI.INV_TRANSACTION_INTERFACE_ID

AND IMT.ORGANIZATION_ID =WMTI.ORGANIZATION_ID

AND IMT.INVENTORY_ITEM_ID =WMTI.INVENTORY_ITEM_ID

AND IMT.TRANSACTION_SOURCE_ID =WMTI.WORK_ORDER_ID

AND IMT.TRANSACTION_SOURCE_TYPE_ID =:B5

),

WORKER_ID =NVL(WORKER_ID,:B3 )

WHERE WMTI.INTERFACE_STATUS_CODE =:B2

AND WMTI.INV_TRANSACTION_HEADER_ID=:B1

AND EXISTS

(SELECT NULL

FROM INV_MATERIAL_TXNS IMT

WHERE IMT.TRANSACTION_SET_ID =WMTI.INV_TRANSACTION_HEADER_ID

AND IMT.ORIGINAL_TRANSACTION_TEMP_ID=WMTI.INV_TRANSACTION_INTERFACE_ID

AND IMT.ORGANIZATION_ID =WMTI.ORGANIZATION_ID

AND IMT.INVENTORY_ITEM_ID =WMTI.INVENTORY_ITEM_ID

AND IMT.TRANSACTION_SOURCE_ID =WMTI.WORK_ORDER_ID

AND IMT.TRANSACTION_SOURCE_TYPE_ID =:B5

);

Explain Plan:

UpdateExplainPlan.PNG

The indexes definition are as follows:

select * from dba_ind_columns where table_name='INV_MATERIAL_TXNS'

and index_name in ('INV_MATERIAL_TXNS_N12','INV_MATERIAL_TXNS_N1');

| Index_Name | Table_Name | Column_Name |
| INV_MATERIAL_TXNS_N12 | INV_MATERIAL_TXNS | TRANSACTION_SET_ID |
| INV_MATERIAL_TXNS_N1 | INV_MATERIAL_TXNS | INVENTORY_ITEM_ID |
| INV_MATERIAL_TXNS_N1 | INV_MATERIAL_TXNS | ORGANIZATION_ID |
| INV_MATERIAL_TXNS_N1 | INV_MATERIAL_TXNS | TRANSACTION_DATE |

My questions are as follows:

  1. In the 'Update' statement, I am referring INV_MATERIAL_TXNS twice - one under 'UPDATE' and the other in EXISTS query. Which one is using the index 'INV_MATERIAL_TXNS_N1'?
  2. Though the queries in the EXISTS and the update seem identical, whey is the index 'INV_MATERIAL_TXNS_N1' being used? Should it not refer the same index 'INV_MATERIAL_TXNS_N12'?

Thank you.

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 13 2016
Added on Jun 6 2016
13 comments
725 views