I'm having lots of problems with a sqr job which is running the following code.
UPDATE PS_ORD_SCHEDULE
SET ORD_SCH_STATUS = 'C'
WHERE ORD_SCH_STATUS <> 'C'
AND ORD_SCH_STATUS <> 'X'
AND EXISTS (SELECT 'X' FROM PS_ORD_LN_PRTYP_VW
WHERE PS_ORD_LN_PRTYP_VW.BUSINESS_UNIT = PS_ORD_SCHEDULE.BUSINESS_UNIT
AND PS_ORD_LN_PRTYP_VW.ORDER_NO = PS_ORD_SCHEDULE.ORDER_NO
AND PS_ORD_LN_PRTYP_VW.ORDER_INT_LINE_NO = PS_ORD_SCHEDULE.ORDER_INT_LINE_NO
AND PS_ORD_LN_PRTYP_VW.PRODUCT_KIT_FLAG = 'N')
AND ( (BCKORDR_CNCL_FLAG = 'Y'
AND EXISTS (SELECT 'X' FROM PS_SHIP_INF_INV
WHERE PS_SHIP_INF_INV.SOURCE_BUS_UNIT = PS_ORD_SCHEDULE.BUSINESS_UNIT
AND PS_SHIP_INF_INV.ORDER_NO = PS_ORD_SCHEDULE.ORDER_NO
AND PS_SHIP_INF_INV.ORDER_INT_LINE_NO = PS_ORD_SCHEDULE.ORDER_INT_LINE_NO
AND PS_SHIP_INF_INV.SCHED_LINE_NO = PS_ORD_SCHEDULE.SCHED_LINE_NBR
AND PS_SHIP_INF_INV.DEMAND_SOURCE = 'OM'))
OR
( QTY_SCHEDULED = (SELECT SUM(QTY_SHIPPED) FROM PS_SHIP_INF_INV
WHERE PS_SHIP_INF_INV.SOURCE_BUS_UNIT = PS_ORD_SCHEDULE.BUSINESS_UNIT
AND PS_SHIP_INF_INV.ORDER_NO = PS_ORD_SCHEDULE.ORDER_NO
AND PS_SHIP_INF_INV.ORDER_INT_LINE_NO = PS_ORD_SCHEDULE.ORDER_INT_LINE_NO
AND PS_SHIP_INF_INV.SCHED_LINE_NO = PS_ORD_SCHEDULE.SCHED_LINE_NBR
AND PS_SHIP_INF_INV.DEMAND_SOURCE = 'OM')))
Sorry it's so long.
This part of the job is sitting for about 6 hours before it moves on.
I have ran an explain plan for it, which gives me the following results:-
Could be that the statistics are old or somebody has droped and rebuilt an index without analyzing it first. You said it takes 6hours, how long is expected for the script to run?
Try to create a concatnated index on the primary key columns with the first colum with highest selectivity followed by the next and so on and then run the sql
Bookmarks