Solved

Oracle, poor performance

Posted on 2011-09-30
10
215 Views
Last Modified: 2012-05-12
below query in our process which is taking between 7-8 seconds when executed. when you execute the same query by commenting out the condition AND INBOUND_OUTBOUND_IND = 'I', it returns within milli seconds. The column INBOUND_OUTBOUND_IND is partitioned. we included the column in the condition to gain performance (searching 1 million records vs total 3 million records). other queries using INBOUND_OUTBOUND are just working fine, but this one is not. Could you please review and let us know why the condition on this column which is supposed to gain a performance is hurting us. If it can be fixed by defining any indexes on the database side, please let me know. any help in this regard is greatly appreciated.

SELECT inbound_seq_pk
      FROM aqtit01.tqt_it_inbound_seq
     WHERE inbound_seq_pk = (SELECT inbound_seq_pk
                           FROM (SELECT inbound_seq_pk, rownum AS rn
                                   FROM Aqtit01.TQT_IT_INBOUND_SEQ inboundSeq
                                  WHERE Inbound_Seq_Pk IN (SELECT Inbound_Seq_Pk
                                                             FROM Aqtit01.TQT_IT_Inbound_Parent
                                                            WHERE PARENT_MATRL IN (SELECT PARENT_MATRL
                                                                                     FROM Aqtit01.TQT_IT_Inbound_Parent
                                                                                    WHERE Inbound_Seq_Pk = 3349801) )
                                    AND Seq_Nbr     < 20110927191030002
                                    AND STS_CDE not in ('RESPONSE_SUCCESS')
                                    AND INBOUND_OUTBOUND_IND = 'I'
                                  ORDER BY seq_nbr
                                ) a
                          WHERE a.rn = 1)
                          AND STS_CDE not in ('RESPONSE_SUCCESS')
0
Comment
Question by:Rao_S
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
10 Comments
 
LVL 15

Expert Comment

by:Devinder Singh Virdi
ID: 36892239
>> The column INBOUND_OUTBOUND_IND is partitioned.

Please provide us execution plan with/without INBOUND_OUTBOND_IND and list of all indexes available along with column.
0
 

Author Comment

by:Rao_S
ID: 36892315
attached expalin plan output.. txqm1-poor-query-explain-1.xls
0
 
LVL 77

Accepted Solution

by:
slightwv (䄆 Netminder) earned 250 total points
ID: 36893678
Can you post the plan with "AND INBOUND_OUTBOUND_IND = 'I'" commented out?

You might have to use a HINT to tweak the execution plan.
0
Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

 
LVL 48

Assisted Solution

by:schwertner
schwertner earned 250 total points
ID: 36895976
Compute the statistics over the tables and indexes in the schema you use.

Have you indexed the column INBOUND_OUTBOUND_IND ?

Of the index (if the selectivity is not high) will help.

An index will be used if the selected by the condition rows are 4-10% of the table. Using hint you can try to force the usage of the index.
0
 

Author Comment

by:Rao_S
ID: 36904099
hi slightwv, the dba implemented a sql profile for the statement, the cost of the old explain plan was 7,970,617856, the new cost is 37,485,208. there was a gain the application performance.

the inbound_sequence_pk is no longer valid today and the sts_cde for that seq_pk has been to changed to 'O'. so i cannot send you the cost plan with "AND INBOUND_OUTBOUND_IND = 'I'" commented out....

with regards to indexes.. (if u check the explain plan)...these are the indexes being used....
PKQT_IT_INBOUND_SEQ is indexed on inbound_seq_pk and is the primary key..
XQT_IT_INBOUND_SEQ_N9 is indexed on seq_nbr..
XQT_IT_INBOUND_PARENT_U1 is indexed on inbound_seq_nbr,parent_matrl..
XQT_IT_INBOUND_PARENT_N2 is indexed on parent_matrl,inbound_seq_pk...

i am not sure about whether the indexes are local or global...but if u look at the expalin plan....TABLE ACCESS BY GLOBAL INDEX ROWID ....probably means the partitioned index is global...?

0
 
LVL 77

Expert Comment

by:slightwv (䄆 Netminder)
ID: 36904342
>>new cost is 37,485,208

Then where was the plan you posted generated?  I don't see costs that high.
0
 

Author Comment

by:Rao_S
ID: 36904369
that is correct... i thought so too...that is what the dba told us....so do you know how he would have calculated the cost..?
0
 
LVL 77

Expert Comment

by:slightwv (䄆 Netminder)
ID: 36904394
>>so do you know how he would have calculated the cost..?

No.  You will need to ask them.

Also, if performance is no longer an issue because you moved from 'I' to 'O' then is there still a question here?
0
 

Author Comment

by:Rao_S
ID: 36904410
nope, no question... related to the query above...i will go ahead and close the question..
0
 

Author Closing Comment

by:Rao_S
ID: 36904417
Thank you...
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Note: this article covers simple compression. Oracle introduced in version 11g release 2 a new feature called Advanced Compression which is not covered here. General principle of Oracle compression Oracle compression is a way of reducing the d…
From implementing a password expiration date, to datatype conversions and file export options, these are some useful settings I've found in Jasper Server.
Via a live example show how to connect to RMAN, make basic configuration settings changes and then take a backup of a demo database
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

751 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question