Query takes more time when number of IN List value increases

2003-02-03 Thread Krishnaswamy, Ranganath
Hi Listers,

I have the below query which takes 36 sec. to execute:

SELECT /*+ordered*/
   S.HOUSEBILL,
   OH.ORDER_REF_NO,
   V.CONTAINER_NUM,
   S.AEI_REFERENCE,
   CE1.SEQUENCE,
   TL1.COMPONENT_VALUE,
   TL2.COMPONENT_VALUE,(
  SELECT
 to_char(SCT1.TIMESTAMP,
 'MMDDHH24MISS')
  FROM
 SHIPMENT_CONTAINER_TIMESTAMP SCT1
  WHERE
 SCT1.EVENT_ID = XM1.EVENT_ID
 AND SCT1.SHIPMENT_ID = S.SHIPMENT_ID
 AND SCT1.CONTAINER_ID = v.CONTAINER_ID
 AND XM1.TABLE_NAME = 'SHIPMENT_CONTAINER_TIMESTAMP'
  UNION
  SELECT
 to_char(ST1.TIMESTAMP,
 'MMDDHH24MISS')
  FROM
 SHIPMENT_TIMESTAMP ST1
  WHERE
 ST1.EVENT_ID = XM1.ALT_EVENT_ID
 AND ST1.SHIPMENT_ID = S.SHIPMENT_ID
 AND XM1.ALT_EVENT_ID IS NOT NULL
 AND XM1.TABLE_NAME ='SHIPMENT_CONTAINER_TIMESTAMP'
 AND NOT EXISTS (
SELECT
   SCT1.TIMESTAMP
FROM
   SHIPMENT_CONTAINER_TIMESTAMP SCT1
WHERE
   SCT1.EVENT_ID = XM1.EVENT_ID
   AND SCT1.SHIPMENT_ID = S.SHIPMENT_ID
   AND SCT1.CONTAINER_ID = v.CONTAINER_ID
   AND XM1.TABLE_NAME ='SHIPMENT_CONTAINER_TIMESTAMP'
 )
  UNION
  SELECT
 to_char(ST1.TIMESTAMP,
 'MMDDHH24MISS')
  FROM
 SHIPMENT_TIMESTAMP ST1
  WHERE
 XM1.TABLE_NAME = 'SHIPMENT_TIMESTAMP'
 AND ST1.SHIPMENT_ID = S.SHIPMENT_ID
 AND ST1.EVENT_ID = XM1.EVENT_ID
  UNION
  SELECT
 to_char(OT1.TIMESTAMP,
 'MMDDHH24MISS')
  FROM
 ORDER_TIMESTAMP OT1
  WHERE
 OT1.EVENT_ID = XM1.EVENT_ID
 AND OT1.SHIPMENT_ORDER_ID = SO.SHIPMENT_ORDER_ID
 AND XM1.TABLE_NAME = 'ORDER_TIMESTAMP'
   ) AS FROM_DATE,
   S.SHIPMENT_ID,
   OH.ORDER_ID,
   V.CONTAINER_ID
FROM
   SHIPMENT S,
   V_SHIP V,
   SHIPMENT_CUSTOMER SC,
   ORDER_HEADER OH,
   SHIPMENT_ORDER SO,
   TRAFFIC_LANE TL1,
   TRAFFIC_LANE TL2,
   CUSTOMER_EVENT CE1,
   XM_FIELD XM1
WHERE 
   (SC.CUSTOMER_MOT_ID = 1040130842248
   AND SC.SHIPMENT_ID = S.SHIPMENT_ID
   AND trunc(S.MSG_CREATION_DATE) = trunc(sysdate - 90)
   AND trunc(S.MSG_CREATION_DATE) = trunc(sysdate)
   AND S.SHIPMENT_ID = V.SHIPMENT_ID
   AND V.SHIPMENT_ID = SO.SHIPMENT_ID(+)
   AND SO.ORDER_ID = OH.ORDER_ID(+))
   AND (TL1.TRAFFIC_LANE_NO = TL2.TRAFFIC_LANE_NO
   AND TL1.LANE_ID = 10413530577392 
   and TL2.LANE_ID = 10413530577393
   AND TL2.COMPONENT_VALUE = S.ORG_STATION_CODE
   AND TL1.COMPONENT_VALUE = S.DEST_STATION_CODE)
   AND CE1.CUSTOMER_MOT_ID = 1040130842248
   and XM1.FIELD_ID = CE1.FIELD_ID
   AND XM1.table_name in ('SHIPMENT_TIMESTAMP')
ORDER BY
   S.SHIPMENT_ID,
   ORDER_ID,
   CONTAINER_ID,
   CE1.SEQUENCE

Here is the explain plan for the query:

Operation   Object Name RowsBytes   CostTQ  In/Out
PStart  PStop

SELECT STATEMENT Hint=CHOOSE349 23589

  SORT ORDER BY 349 103 K   23589

HASH JOIN   349 103 K   23561

  TABLE ACCESS BY INDEX ROWID   XM_FIELD6   348 2

INDEX RANGE SCANXM_FIELD_TABLE_NAME 6   1

  MERGE JOIN CARTESIAN  5 K 1 M 23537

NESTED LOOPS182 41 K23355

  HASH JOIN 364 K   67 M23355

TABLE ACCESS BY INDEX ROWID TRAFFIC_LANE5   190 1

  INDEX RANGE SCAN  TL_LANE_ID_VALUE5   2

HASH JOIN OUTER 7 M 1G  6630

  HASH JOIN OUTER   197 K   27 M2918

HASH JOIN   197 K   20 M1096

  TABLE ACCESS BY INDEX ROWID   SHIPMENT_CUSTOMER   39
10142
INDEX RANGE SCANSHIP_CUS_CMOT_ID39
1
  HASH JOIN 506 K   39 M450

TABLE ACCESS BY INDEX ROWID SHIPMENT102 4 K
6
  INDEX RANGE SCAN  SHIP_MSG_CREATION_DT102
2
VIEWV_SHIP  496 K   16 M124

  HASH JOIN OUTER   496 K   22 M124

INDEX FAST FULL SCANSHP_SHP_ID_DEST_COUNTRY 40 K
514 K   4
TABLE ACCESS FULL   SHIPMENT_CONTAINER  1 K
41 K3
TABLE ACCESS FULL   SHIPMENT_ORDER  82  3 K 1

  TABLE ACCESS FULL ORDER_HEADER3 K 36 K7

  INDEX UNIQUE SCAN XPKTRAFFIC_LANE 5   190

SORT JOIN   32  416 23537

  TABLE ACCESS BY INDEX ROWID   CUSTOMER_EVENT  32  416 1

   

RE: Query takes more time when number of IN List value increases

2003-02-03 Thread DENNIS WILLIAMS
Ranganath
   I notice that the cost for the explain plan is identical. Keep in mind
that the explain plan is a good quick look at how Oracle intends to perform
the query, but is not an actual execution. It can be fooled, and even make
bad choices. When I encounter a query where explain plan isn't giving me
good information, I turn trace on and then run the results through tkprof. 
I entered tkprof tutorial in Google and received several good links, this
one came out on top:
http://info-it.umsystem.edu/oradocs/doc/server/doc/A48506/strace.htm#1018

Dennis Williams
DBA, 40%OCP
Lifetouch, Inc.
[EMAIL PROTECTED] 


-Original Message-
[mailto:[EMAIL PROTECTED]]
Sent: Monday, February 03, 2003 3:59 AM
To: Multiple recipients of list ORACLE-L


Hi Listers,

I have the below query which takes 36 sec. to execute:

SELECT /*+ordered*/
   S.HOUSEBILL,
   OH.ORDER_REF_NO,
   V.CONTAINER_NUM,
   S.AEI_REFERENCE,
   CE1.SEQUENCE,
   TL1.COMPONENT_VALUE,
   TL2.COMPONENT_VALUE,(
  SELECT
 to_char(SCT1.TIMESTAMP,
 'MMDDHH24MISS')
  FROM
 SHIPMENT_CONTAINER_TIMESTAMP SCT1
  WHERE
 SCT1.EVENT_ID = XM1.EVENT_ID
 AND SCT1.SHIPMENT_ID = S.SHIPMENT_ID
 AND SCT1.CONTAINER_ID = v.CONTAINER_ID
 AND XM1.TABLE_NAME = 'SHIPMENT_CONTAINER_TIMESTAMP'
  UNION
  SELECT
 to_char(ST1.TIMESTAMP,
 'MMDDHH24MISS')
  FROM
 SHIPMENT_TIMESTAMP ST1
  WHERE
 ST1.EVENT_ID = XM1.ALT_EVENT_ID
 AND ST1.SHIPMENT_ID = S.SHIPMENT_ID
 AND XM1.ALT_EVENT_ID IS NOT NULL
 AND XM1.TABLE_NAME ='SHIPMENT_CONTAINER_TIMESTAMP'
 AND NOT EXISTS (
SELECT
   SCT1.TIMESTAMP
FROM
   SHIPMENT_CONTAINER_TIMESTAMP SCT1
WHERE
   SCT1.EVENT_ID = XM1.EVENT_ID
   AND SCT1.SHIPMENT_ID = S.SHIPMENT_ID
   AND SCT1.CONTAINER_ID = v.CONTAINER_ID
   AND XM1.TABLE_NAME ='SHIPMENT_CONTAINER_TIMESTAMP'
 )
  UNION
  SELECT
 to_char(ST1.TIMESTAMP,
 'MMDDHH24MISS')
  FROM
 SHIPMENT_TIMESTAMP ST1
  WHERE
 XM1.TABLE_NAME = 'SHIPMENT_TIMESTAMP'
 AND ST1.SHIPMENT_ID = S.SHIPMENT_ID
 AND ST1.EVENT_ID = XM1.EVENT_ID
  UNION
  SELECT
 to_char(OT1.TIMESTAMP,
 'MMDDHH24MISS')
  FROM
 ORDER_TIMESTAMP OT1
  WHERE
 OT1.EVENT_ID = XM1.EVENT_ID
 AND OT1.SHIPMENT_ORDER_ID = SO.SHIPMENT_ORDER_ID
 AND XM1.TABLE_NAME = 'ORDER_TIMESTAMP'
   ) AS FROM_DATE,
   S.SHIPMENT_ID,
   OH.ORDER_ID,
   V.CONTAINER_ID
FROM
   SHIPMENT S,
   V_SHIP V,
   SHIPMENT_CUSTOMER SC,
   ORDER_HEADER OH,
   SHIPMENT_ORDER SO,
   TRAFFIC_LANE TL1,
   TRAFFIC_LANE TL2,
   CUSTOMER_EVENT CE1,
   XM_FIELD XM1
WHERE 
   (SC.CUSTOMER_MOT_ID = 1040130842248
   AND SC.SHIPMENT_ID = S.SHIPMENT_ID
   AND trunc(S.MSG_CREATION_DATE) = trunc(sysdate - 90)
   AND trunc(S.MSG_CREATION_DATE) = trunc(sysdate)
   AND S.SHIPMENT_ID = V.SHIPMENT_ID
   AND V.SHIPMENT_ID = SO.SHIPMENT_ID(+)
   AND SO.ORDER_ID = OH.ORDER_ID(+))
   AND (TL1.TRAFFIC_LANE_NO = TL2.TRAFFIC_LANE_NO
   AND TL1.LANE_ID = 10413530577392 
   and TL2.LANE_ID = 10413530577393
   AND TL2.COMPONENT_VALUE = S.ORG_STATION_CODE
   AND TL1.COMPONENT_VALUE = S.DEST_STATION_CODE)
   AND CE1.CUSTOMER_MOT_ID = 1040130842248
   and XM1.FIELD_ID = CE1.FIELD_ID
   AND XM1.table_name in ('SHIPMENT_TIMESTAMP')
ORDER BY
   S.SHIPMENT_ID,
   ORDER_ID,
   CONTAINER_ID,
   CE1.SEQUENCE

Here is the explain plan for the query:

Operation   Object Name RowsBytes   CostTQ  In/Out
PStart  PStop

SELECT STATEMENT Hint=CHOOSE349 23589

  SORT ORDER BY 349 103 K   23589

HASH JOIN   349 103 K   23561

  TABLE ACCESS BY INDEX ROWID   XM_FIELD6   348 2

INDEX RANGE SCANXM_FIELD_TABLE_NAME 6   1

  MERGE JOIN CARTESIAN  5 K 1 M 23537

NESTED LOOPS182 41 K23355

  HASH JOIN 364 K   67 M23355

TABLE ACCESS BY INDEX ROWID TRAFFIC_LANE5   190 1

  INDEX RANGE SCAN  TL_LANE_ID_VALUE5   2

HASH JOIN OUTER 7 M 1G  6630

  HASH JOIN OUTER   197 K   27 M2918

HASH JOIN   197 K   20 M1096

  TABLE ACCESS BY INDEX ROWID   SHIPMENT_CUSTOMER   39
10142
INDEX RANGE SCANSHIP_CUS_CMOT_ID39
1
  HASH JOIN 506 K   39 M450

TABLE ACCESS BY INDEX ROWID SHIPMENT102 4 K
6
  INDEX RANGE SCAN  SHIP_MSG_CREATION_DT102
2

RE: Query takes more time when number of IN List value increases

2003-02-03 Thread DENNIS WILLIAMS
Raj - If someone hasn't previously used tkprof, in your opinion should they
start with this utility, or with tkprof and work their way to this?



Dennis Williams 
DBA, 40%OCP 
Lifetouch, Inc. 
[EMAIL PROTECTED] 

-Original Message-
Sent: Monday, February 03, 2003 9:40 AM
To: Multiple recipients of list ORACLE-L



Also see 

http://metalink.oracle.com/metalink/plsql/ml2_documents.showFrameDocument?p_
database_id=NOT
http://metalink.oracle.com/metalink/plsql/ml2_documents.showFrameDocument?p
_database_id=NOTp_id=224270.1 p_id=224270.1 this makes it easy ...

Raj 
__ 
Rajendra Jamadagni  MIS, ESPN Inc. 
Rajendra dot Jamadagni at ESPN dot com 
Any opinion expressed here is personal and doesn't reflect that of ESPN Inc.

QOTD: Any clod can have facts, but having an opinion is an art! 

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: DENNIS WILLIAMS
  INET: [EMAIL PROTECTED]

Fat City Network Services-- 858-538-5051 http://www.fatcity.com
San Diego, California-- Mailing list and web hosting services
-
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).




RE: Query takes more time when number of IN List value increases

2003-02-03 Thread Jamadagni, Rajendra
Title: RE: Query takes more time when number of IN List value increases





Also see


http://metalink.oracle.com/metalink/plsql/ml2_documents.showFrameDocument?p_database_id=NOT_id=224270.1 this makes it easy ...

Raj
__
Rajendra Jamadagni  MIS, ESPN Inc.
Rajendra dot Jamadagni at ESPN dot com
Any opinion expressed here is personal and doesn't reflect that of ESPN Inc. 
QOTD: Any clod can have facts, but having an opinion is an art!



*This e-mail 
message is confidential, intended only for the named recipient(s) above and may 
contain information that is privileged, attorney work product or exempt from 
disclosure under applicable law. If you have received this message in error, or are 
not the named recipient(s), please immediately notify corporate MIS at (860) 766-2000 
and delete this e-mail message from your computer, Thank 
you.*1



RE: Query takes more time when number of IN List value increases

2003-02-03 Thread Jamadagni, Rajendra
Title: RE: Query takes more time when number of IN List value increases





Dennis,


I am not an expert, but I find this utility gives a (relatively) readable output compared to tkprof. I use both, but for starters I'd say, look at both and see what you like. This utility doesn't use tkprof ... I think ... g

As usual YMMV
Raj
__
Rajendra Jamadagni  MIS, ESPN Inc.
Rajendra dot Jamadagni at ESPN dot com
Any opinion expressed here is personal and doesn't reflect that of ESPN Inc. 
QOTD: Any clod can have facts, but having an opinion is an art!



-Original Message-
From: DENNIS WILLIAMS [mailto:[EMAIL PROTECTED]]
Sent: Monday, February 03, 2003 11:09 AM
To: Multiple recipients of list ORACLE-L
Subject: RE: Query takes more time when number of IN List value
increases



Raj - If someone hasn't previously used tkprof, in your opinion should they
start with this utility, or with tkprof and work their way to this?




Dennis Williams 
DBA, 40%OCP 
Lifetouch, Inc. 
[EMAIL PROTECTED] 


-Original Message-
Sent: Monday, February 03, 2003 9:40 AM
To: Multiple recipients of list ORACLE-L




Also see 


http://metalink.oracle.com/metalink/plsql/ml2_documents.showFrameDocument?p_
database_id=NOT
http://metalink.oracle.com/metalink/plsql/ml2_documents.showFrameDocument?p
_database_id=NOTp_id=224270.1 p_id=224270.1 this makes it easy ...


Raj 
__ 
Rajendra Jamadagni MIS, ESPN Inc. 
Rajendra dot Jamadagni at ESPN dot com 
Any opinion expressed here is personal and doesn't reflect that of ESPN Inc.


QOTD: Any clod can have facts, but having an opinion is an art! 


-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: DENNIS WILLIAMS
 INET: [EMAIL PROTECTED]


Fat City Network Services -- 858-538-5051 http://www.fatcity.com
San Diego, California -- Mailing list and web hosting services
-
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).



This e-mail 
message is confidential, intended only for the named recipient(s) above and may 
contain information that is privileged, attorney work product or exempt from 
disclosure under applicable law. If you have received this message in error, or are 
not the named recipient(s), please immediately notify corporate MIS at (860) 766-2000 
and delete this e-mail message from your computer, Thank 
you.*2