Hi, I have one question. I have a "insert into select " query, where the select query access two remote table and one local table. I want to insert only 1000 rows, so I restricted with rownum < 1000 clause. Now when i do a select, it is fetching the 1000 records in 22 seconds.But when I do a insert, it is taking long time. The plans for both quires are pasted below. Please guiide me what is wrong? SELECT /*+ DRIVING_SITE(INV) */ INV.row_id, INV.ASSET_NUM AS SIM_CARD_NUMBER, INV.SERIAL_NUM, INT2.X_VDF_PPC_CODE, INT2.X_VDF_LOGO, INT2.X_VDF_LOGO_DESC, INT2.X_VDF_CNV_CODE, INT2.X_VDF_CARD_TYPE_DESC, INT2.X_VDF_CARD_TYPE, INT2.DESC_TEXT, INT2.X_VDF_DUAL_CARD_FLG, INV.STATUS_CD, INV.X_VDF_HLR, INV.X_VDF_INV_STATUS, INV.X_VDF_SUB_STATUS, Q.X_VDF_SRC_SYS, Q.X_VDF_ORIGINAL_ID , Q.SERV_ACCNT_ID, L_SOURCE_SYS FROM INVENTRY_REMOTE INV, CHECK_IN_REMOTE INT2, LOCAL_TABLE Q WHERE INV.SERIAL_NUM IS NOT NULL AND INT2.PROD_CATG_CD = 'SIM Card' AND INT2.ROW_ID = INV.PROD_ID AND Q.X_VDF_SIM_ASSET_ID = INV.ROW_ID AND ROWNUM < 1000 PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | Inst |IN-OUT| ---------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT REMOTE | | 4 | 776 | 5 | | | 1 | COUNT STOPKEY | | | | | | | 2 | NESTED LOOPS | | 4 | 776 | 5 | | | 3 | NESTED LOOPS | | 43 | 5762 | 4 | | | 4 | REMOTE | LOCAL_TABLE | 82 | 6314 | 2 | ! | | 5 | TABLE ACCESS BY INDEX ROWID| INVENTRY_REMOTE | 1 | 57 | 1 | SIEINT | | 6 | INDEX UNIQUE SCAN | INVENTRY_REMOTE_P1 | 1 | | 1 | SIEINT | PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------------------------------- | 7 | TABLE ACCESS BY INDEX ROWID | CHECK_IN_REMOTE | 1 | 60 | 1 | SIEINT | | 8 | INDEX UNIQUE SCAN | CHECK_IN_REMOTE_P1 | 1 | | 1 | SIEINT | ---------------------------------------------------------------------------------------------------- INSERT /*+ APPEND */ INTO SIMCARD_TABLE ( ASSET_ROW_ID , SIM_CARD_NUMBER , IMSI , PPC_CODE , VDF_LOGO , VDF_LOGO_DESC , CNV_CODE , CARD_TYPE_DESC , CARD_TYPE , DESC_TEXT , DUAL_CARD_FLG , STATUS_CD , HLR , STATUS , SUB_STATUS , SERV_SRC_SYS , SRC_SYS_ORIGIN_ID , SERV_ACCNT_ID, SOURCE_SYS ) SELECT /*+ DRIVING_SITE(INV) */ INV.row_id, INV.ASSET_NUM AS SIM_CARD_NUMBER, INV.SERIAL_NUM, INT2.X_VDF_PPC_CODE, INT2.X_VDF_LOGO, INT2.X_VDF_LOGO_DESC, INT2.X_VDF_CNV_CODE, INT2.X_VDF_CARD_TYPE_DESC, INT2.X_VDF_CARD_TYPE, INT2.DESC_TEXT, INT2.X_VDF_DUAL_CARD_FLG, INV.STATUS_CD, INV.X_VDF_HLR, INV.X_VDF_INV_STATUS, INV.X_VDF_SUB_STATUS, Q.X_VDF_SRC_SYS, Q.X_VDF_ORIGINAL_ID , Q.SERV_ACCNT_ID, 'HEY' FROM INVENTRY_REMOTE INV, CHECK_IN_REMOTE INT2, LOCAL_TABLE Q WHERE INV.SERIAL_NUM IS NOT NULL AND INT2.PROD_CATG_CD = 'SIM Card' AND INT2.ROW_ID = INV.PROD_ID AND Q.X_VDF_SIM_ASSET_ID = INV.ROW_ID AND ROWNUM < 1000 PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | Inst |IN-OUT| -------------------------------------------------------------------------------------------- | 0 | INSERT STATEMENT | | 17 | 7684 | 617K| | | | 1 | LOAD AS SELECT | | | | | | | | 2 | COUNT STOPKEY | | | | | | | | 3 | HASH JOIN | | 82 | 20828 | 2920K| | | | 4 | TABLE ACCESS FULL| LOCAL_TABLE | 82 | 6314 | 2 | | | | 5 | REMOTE | | 190M| 31G| 2905K| SIEINT | R->S | --------------------------------------------------------------------------------------------