Solved

Oracle, poor performance

Posted on 2011-09-30
10
211 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
10 Comments
 
LVL 15

Expert Comment

by:Devinder Singh Virdi
Comment Utility
>> 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
Comment Utility
attached expalin plan output.. txqm1-poor-query-explain-1.xls
0
 
LVL 76

Accepted Solution

by:
slightwv (䄆 Netminder) earned 250 total points
Comment Utility
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
 
LVL 47

Assisted Solution

by:schwertner
schwertner earned 250 total points
Comment Utility
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
Comment Utility
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
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
Comment Utility
>>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
Comment Utility
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 76

Expert Comment

by:slightwv (䄆 Netminder)
Comment Utility
>>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
Comment Utility
nope, no question... related to the query above...i will go ahead and close the question..
0
 

Author Closing Comment

by:Rao_S
Comment Utility
Thank you...
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Join & Write a Comment

Suggested Solutions

This article started out as an Experts-Exchange question, which then grew into a quick tip to go along with an IOUG presentation for the Collaborate confernce and then later grew again into a full blown article with expanded functionality and legacy…
Using SQL Scripts we can save all the SQL queries as files that we use very frequently on our database later point of time. This is one of the feature present under SQL Workshop in Oracle Application Express.
This video shows information on the Oracle Data Dictionary, starting with the Oracle documentation, explaining the different types of Data Dictionary views available by group and permissions as well as giving examples on how to retrieve data from th…
This video shows how to Export data from an Oracle database using the Datapump Export Utility.  The corresponding Datapump Import utility is also discussed and demonstrated.

728 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

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now