| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> what else can I do here?
Hi gang. Any help on this will be welcomed!!!
I have a very dynamic application, and am trying to tune a procedure that takes about 30-minutes to run (after doing dbms_stats.gather_blah)
Am using 9.2.0.1 on Windows 2000 Server.
Within the same process, I'm deleting from another table about 2 mln rows... (simple delete table_name where indexkey=value)
The main query that seems to take the most time to run, because of about 2 mln rows that it needs to process is this (in a cursor): SELECT LEVEL, object_id, member_id, member_object_id, member_name
FROM sol_object_member
START WITH solution_id = :b2
AND object_id = :b1
AND member_id != 0
CONNECT BY PRIOR solution_id = solution_id
AND PRIOR member_object_id = object_id;
Here's the xplan for it:
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=5 Card=10 Bytes=46
0)
1 0 CONNECT BY (WITH FILTERING)
2 1 NESTED LOOPS
3 2 INDEX (SKIP SCAN) OF 'PK_XHQ_SOL_OBJECT_MEMBER' (UNIQU
E) (Cost=12 Card=1 Bytes=26)
4 2 TABLE ACCESS (BY USER ROWID) OF 'XHQ_SOL_OBJECT_MEMBER
'
5 1 NESTED LOOPS
6 5 BUFFER (SORT)
7 6 CONNECT BY PUMP
8 5 TABLE ACCESS (BY INDEX ROWID) OF 'XHQ_SOL_OBJECT_MEMBE
R' (Cost=5 Card=10 Bytes=460)
9 8 INDEX (RANGE SCAN) OF 'PK_XHQ_SOL_OBJECT_MEMBER' (UN
IQUE) (Cost=3 Card=10)
Received on Mon Apr 05 2004 - 20:10:56 CDT
![]() |
![]() |