Peformance fine tunning of query

Am using co related subquery, please help because it's taking more time when dealing with more number of rows
below is my sample query.
SELECT EM.ENTITY_ID,
EM.ENTITY_DESC,
EM.UNIT_ID,
EM.UNIT_DESC,
EM.OC_ID,
EM.OC_DESC,
EM.SBU_ID,
EM.SBU_DESC,
EM.COST_CENTRE_ID,
EM.COST_CENTRE_DESC,
EM.LOCATION_ID,
EM.LOCATION_DESC,
EM.BAND_ID,
EM.BAND_DESC,
EM.GRADE_ID,
EM.GRADE_DESC,
EM.PSNO,
EM.EMPLOYEE_ID,
EM.EMPLOYEE_NAME,
H.MEDH_CLAIM_TYPE_ID AS CLAIM_TYPE_ID,
H.MEDH_CLAIM_NO AS CLAIM_NO,
H.MEDH_CLAIM_DATE AS CLAIM_DATE,
vCurrencyCode CURRENCY_ID,
EBC_Fn_Currency_Desc (vCurrencyCode) CURRENCY_DESC,
Nvl(
Select
SUM(NVL (D1.MEDD_CLAIMED_AMOUNT,0))
From ebcuser.EBC_D_MEDICAL_CLAIM D1 Where H.MEDH_CLAIM_NO = D1.MEDD_CLAIM_NO AND D1.MEDD_DELETED_BY IS NULL
,0) AS CLAIM_AMOUNT,
Nvl(
Select
NVL (
SUM(CASE
WHEN (D2.MEDD_R_APPROVED_AMOUNT) IS NULL
THEN
(D2.MEDD_APPROVED_AMOUNT)
ELSE
(D2.MEDD_R_APPROVED_AMOUNT)
END),
0.00)
From ebcuser.EBC_D_MEDICAL_CLAIM D2 Where H.MEDH_CLAIM_NO = D2.MEDD_CLAIM_NO AND D2.MEDD_DELETED_BY IS NULL
,0) AS PAYABLE_AMOUNT,
H.MEDH_CREATED_BY AS CREATED_BY,
H.MEDH_CREATED_ON AS CREATED_ON,
H.MEDH_PROCESSED_BY AS PROCESSED_BY,
H.MEDH_PROCESSED_ON AS PROCESSED_ON,
H.MEDH_ERA_BATCH_NO AS ERA_BATCH_NO,
MEDH_QUEUE_STATUS AS ERA_BATCH_STATUS, --Q - Queued for BPV, B - BVP generated, J - JV generated
EM.EMP_BANK_IFSC_CODE,
EM.EMP_BANK_ACNO,
EM.EMP_PAY_MODE,
EM.EMP_ACTIVE_STATUS,
H.MEDH_RECEIVED_ON,
H.MEDH_SCRUTINIZED_ON
FROM GEN_V_EMPLOYEE_DATA EM,
EBC_H_MEDICAL_CLAIM H
WHERE H.MEDH_EMPLOYEE_ID = EM.EMPLOYEE_ID
AND H.MEDH_PROCESSED_BY IS NOT NULL
and ( (H.MEDH_ERA_BATCH_NO is not null
AND (EBCUSER.EBC_FN_PAYMENT_DATE(H.MEDH_ERA_BATCH_NO) BETWEEN vPeriod_From AND vPeriod_Upto) and vType_Tag='P' )
or
( vType_Tag='C' and ( H.MEDH_CLAIM_DATE BETWEEN vPeriod_From AND vPeriod_Upto ) )
);

Is there any chance you can move the logic from your function call into the SQL query?
AND
   EBCUSER.EBC_FN_PAYMENT_DATE(H.MEDH_ERA_BATCH_NO) BETWEEN vPeriod_From AND vPeriod_Upto) and vType_Tag='P'
)If not, do you high a high degree of repeatably in the data you are passing to the function?
If so, you may greatly benefit from using scalar subquery caching
AND
   (select EBCUSER.EBC_FN_PAYMENT_DATE(H.MEDH_ERA_BATCH_NO) from dual)
   BETWEEN vPeriod_From AND vPeriod_Upto) and vType_Tag='P'
)which you can read about here.
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:8491662046178
and in many other threads on AskTom.
Also
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1547006324238
may be of some benefit.
This all assumes that the function call is what is actually causing you problems (perhaps a bad assumption). You should be running a trace (TKPROF or AWR or something) to get an idea of why this query is actually causing you problems.
Also, as you are new to the forum, please read the FAQ so you learn things like using the tags to preserve the formatting of your code like i did above.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

Similar Messages

  • I need to fine tune a query

    Hi All,
    I need to fine tune my select query . I am giving a sample query which is model of my Query .
    Sample Tables: Employee, Manager, Department
    Select a.employee_name,a.employee_age,decode(a.employee_status,'Y','Promoted','Still in Progress'), NVL(b.employee_details , 0),c.department_name from employee a, manager b , department c where a.employee_id =b.employee_id(+) and a.employee_id = c.employee_id(+) and c.department_status in ('Y',A') order by a.employee_joining_date
    This is a sample query. In my query which should be fine tune has lot of decode and nvl functions. This query is passed to oracle as string from Java .It takes 2 seconds but it should be taking only fraction of seconds..
    What shall i do?
    Shall i create materialise views or a function in oracle with return value as sys_refucursor to Java code. does function based index should be used in where clause only. If so what should i do to minimise decode and nvl functions.Please help me

    >
    Select a.employee_name,a.employee_age,decode(a.employee_status,'Y','Promoted','Still in Progress'),
    NVL(b.employee_details , 0),c.department_name from employee a, manager b , department c
    where a.employee_id =b.employee_id(+) and a.employee_id = c.employee_id(+) and c.department_status
    in ('Y',A') order by a.employee_joining_date I'm wondering why an "employee_details" field is 0 - doesn't make much sense to me.
    Also, the (+) syntax is deprecated - use standard ANSI join syntax instead (Mr. Google is your friend).
    This is a sample query. In my query which should be fine tune has lot of decode and nvl functions.
    This query is passed to oracle as string from Java .It takes 2 seconds but it should be taking only fraction of seconds..Why should it take only a fraction of a second? How do you know this for a fact? TKProf should be
    able to tell you what's happening.
    What shall i do?
    Shall i create materialise views or a function in oracle with return value as sys_refucursor to Java code.
    does function based index should be used in where clause only. If so what should i do to minimise
    decode and nvl functions.Please help meSounds to me like you're thrashing around desperately in search of a "fancy" solution.
    Read some performance books on Oracle - you don't mention your version of Oracle
    or your OS, so it's difficult to help with that.
    Christopher Lawson's book is an excellent and very readable into to Oracle performance.
    Also, Oracle Performance 101 - as well as anything by Tom Kyte. More advanced stuff is
    available from Jonathan Lewis and Christian Antognini. Also, take a look at the FAQ for
    this group (as recommended by the other poster) and don't forget the docco*
    or (short version) RTFM*.
    HTH,
    Paul...

  • Fine tunning the query which uses /*+ USE_CONCAT */ table hint

    Some of the queries in our application uses the /*+ USE_CONCAT */ table hint which takes huge time for the execution in Oracle database.when we fire the below query in 250Million production database it takes approx.3min for the execution.
    Because of this we are facing a performance issue in the application.
    Below is the sample query :
    SELECT /*+ USE_CONCAT */ * FROM DI_MATCH_KEY WHERE NORM_COUNTRY_CD = 'US'
    AND ((( NORM_CONAME_KEY1 ='WILM I' OR NORM_CONAME_KEY2 = 'WILM I' OR NORM_CONAME_KEY23 = 'WILM I'
    OR NORM_CONAME_KEYFIRST ='WILLIAM' ) AND NORM_STATE_PROVINCE = 'CA' ) OR NORM_ADDR_KEY2 = 'CALMN 12 3 OSAI')
    Regarding the indexes almost for all the columns combination for the above sql index already created in table.
    Your suggestions will be appreciated
    Thanks,
    Regards,
    Krishna kumar

    Hi,
    Thanks for our valuable inputs.
    As suggested find attached explain plan and trace file details in the excel sheet.
    TRACE FILE:
    <pre>
    TKPROF: Release 10.2.0.1.0 - Production on Thu Feb 14 11:11:59 2008
    Copyright (c) 1982, 2005, Oracle. All rights reserved.
    Trace file: implhr01_ora_26457.trc
    Sort options: prsela exeela fchela
    count = number of times OCI procedure was executed
    cpu = cpu time in seconds executing
    elapsed = elapsed time in seconds executing
    disk = number of physical reads of buffers from disk
    query = number of buffers gotten for consistent read
    current = number of buffers gotten in current mode (usually for update)
    rows = number of rows processed by the fetch or execute call
    SELECT /*+ USE_CONCAT */ COUNT(*) FROM DI_MATCH_KEY WHERE NORM_COUNTRY_CD = 'US'
    AND ((( NORM_CONAME_KEY1 ='WILM I' OR NORM_CONAME_KEY2 = 'WILM I' OR NORM_CONAME_KEY23 = 'WILM I'
    OR NORM_CONAME_KEYFIRST ='WILLIAM' ) AND NORM_STATE_PROVINCE = 'CA' ) OR NORM_ADDR_KEY2 = 'CALMN 12 3 OSAI')
    call count cpu elapsed disk query current rows
    Parse 1 0.03 0.05 0 0 0 0
    Execute 1 0.00 0.00 0 0 0 0
    Fetch 2 3.97 65.43 30633 64053 0 1
    total 4 4.00 65.49 30633 64053 0 1
    Misses in library cache during parse: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 76
    Rows Row Source Operation
    1 SORT AGGREGATE (cr=64053 pr=30633 pw=0 time=65436584 us)
    73914 CONCATENATION (cr=64053 pr=30633 pw=0 time=61623673 us)
    0 TABLE ACCESS BY INDEX ROWID DI_MATCH_KEY (cr=4 pr=2 pw=0 time=32617 us)
    0 INDEX RANGE SCAN MKADDR_KEY2 (cr=4 pr=2 pw=0 time=32599 us)(object id 122583)
    75 TABLE ACCESS BY INDEX ROWID DI_MATCH_KEY (cr=80 pr=20 pw=0 time=1369427 us)
    75 INDEX RANGE SCAN MK_CY_KEY1_ST_PROV (cr=5 pr=0 pw=0 time=2119 us)(object id 122666)
    2 TABLE ACCESS BY INDEX ROWID DI_MATCH_KEY (cr=81 pr=2 pw=0 time=26723 us)
    77 INDEX RANGE SCAN MK_CY_KEY2_ST_PROV (cr=4 pr=0 pw=0 time=3641 us)(object id 122667)
    2 TABLE ACCESS BY INDEX ROWID DI_MATCH_KEY (cr=6 pr=0 pw=0 time=47 us)
    2 INDEX RANGE SCAN MK_CY_KEY1_AGN (cr=4 pr=0 pw=0 time=28 us)(object id 122670)
    73835 TABLE ACCESS BY INDEX ROWID DI_MATCH_KEY (cr=63882 pr=30609 pw=0 time=61503773 us)
    73905 INDEX RANGE SCAN MK_CY_KEY2_AGN (cr=266 pr=176 pw=0 time=148198 us)(object id 122745)
    alter session set sql_trace true
    call count cpu elapsed disk query current rows
    Parse 0 0.00 0.00 0 0 0 0
    Execute 1 0.00 0.00 0 0 0 0
    Fetch 0 0.00 0.00 0 0 0 0
    total 1 0.00 0.00 0 0 0 0
    Misses in library cache during parse: 0
    Misses in library cache during execute: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 76
    OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
    call count cpu elapsed disk query current rows
    Parse 1 0.03 0.05 0 0 0 0
    Execute 2 0.00 0.00 0 0 0 0
    Fetch 2 3.97 65.43 30633 64053 0 1
    total 5 4.00 65.50 30633 64053 0 1
    Misses in library cache during parse: 1
    Misses in library cache during execute: 1
    OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
    call count cpu elapsed disk query current rows
    Parse 9 0.05 0.03 0 0 0 0
    Execute 23 0.05 0.08 0 0 0 0
    Fetch 98 0.01 0.01 0 137 0 76
    total 130 0.11 0.13 0 137 0 76
    Misses in library cache during parse: 9
    Misses in library cache during execute: 9
    2 user SQL statements in session.
    23 internal SQL statements in session.
    25 SQL statements in session.
    Trace file: implhr01_ora_26457.trc
    Trace file compatibility: 10.01.00
    Sort options: prsela exeela fchela
    1 session in tracefile.
    2 user SQL statements in trace file.
    23 internal SQL statements in trace file.
    25 SQL statements in trace file.
    11 unique SQL statements in trace file.
    561 lines in trace file.
    91 elapsed seconds in trace file.
    </pre>
    EXPLAIN PLAN:
    <pre>
    ID     OPERATION     OBJECT_NAME     CARDINALITY     BYTES     COST     CPU_COST
    0     SELECT STATEMENT          1     53     1886     15753172
    1     SORT          1     53          
    2     CONCATENATION                         
    3     TABLE ACCESS     DI_MATCH_KEY     8     424     10     78334
    4     INDEX     MKADDR_KEY2     8          4     30086
    5     TABLE ACCESS     DI_MATCH_KEY     3     159     7     53574
    6     INDEX     MK_CY_KEY1_ST_PROV     3          4     29286
    7     TABLE ACCESS     DI_MATCH_KEY     3     159     7     53740
    8     INDEX     MK_CY_KEY2_ST_PROV     3          4     29286
    9     TABLE ACCESS     DI_MATCH_KEY     5     265     7     55941
    10     INDEX     MK_CY_KEY1_AGN     5          4     29686
    11     TABLE ACCESS     DI_MATCH_KEY     2192     116176     1855     15511582
    12     INDEX     MK_CY_KEY2_AGN     2228          12     524136
    </pre>
    Kindly help us regarding this.
    Thanks,
    Krishna Kumar.

  • Help Fine tune this query

    I am running the following query. This is being run for every row that is being loaded. I figured that this is taking the most time
    select distinct h.PRNT_PROD_GRP_ID, h.CHILD_PROD_GRP_ID, pg.PROD_GRP_REPORTING_NM, pg.PROD_GRP_ID, pg.PROD_GRP_TYP_ID
    from PROD_GRP_HCHY_OUTBD h, PROD_GRP pg
    where pg.PROD_GRP_ID = h.PRNT_PROD_GRP_ID and
    pg.PROD_GRP_ID in (select c.PROD_GRP_ID from prod_grp p, prod_grp c, PROD_GRP_HCHY_OUTBD hy, (select h.PRNT_PROD_GRP_ID, h.CHILD_PROD_GRP_ID, level LVLID, PROD_GRP_HCHY_OUTBD_ID from PROD_GRP_HCHY_OUTBD h where h.PROD_MKT_ID in (select pga.PROD_GRP_ID from APLCTN_SYS aps, APLCTN a, PROD_GRP_APLCTN pga where aps.APLCTN_SYS_Cd = 'ETMS' AND aps.APLCTN_SYS_ID = a.APLCTN_SYS_ID and a.APLCTN_ID = pga.APLCTN_ID) start with h.PRNT_PROD_GRP_ID in (select pga.PROD_GRP_ID from APLCTN_SYS aps, APLCTN a, PROD_GRP_APLCTN pga where aps.APLCTN_SYS_Cd = 'ETMS' AND aps.APLCTN_SYS_ID = a.APLCTN_SYS_ID and a.APLCTN_ID = pga.APLCTN_ID) connect by h.PRNT_PROD_GRP_ID = prior h.CHILD_PROD_GRP_ID) TREE where p.prod_grp_id = TREE.PRNT_PROD_GRP_ID and c.prod_grp_id = TREE.CHILD_PROD_GRP_ID and hy.PROD_GRP_HCHY_OUTBD_ID = TREE.PROD_GRP_HCHY_OUTBD_ID) connect by prior h.PRNT_PROD_GRP_ID = h.CHILD_PROD_GRP_ID start with h.CHILD_PROD_GRP_ID = 7650 order by pg.PROD_GRP_TYP_ID;

    hey nick,
    this is the query that is run by Tibco (middleware).
    we are trying to extract this data from the data store and load into a target database.
    this query generates a tree of parent - child rows that belong to a particular criteria.
    everytime the parent is fetched for a particular child, we need to make sure that the parent falls in that criteria and hence the many (in) queries.
    hope this helps

  • HOW TO FINE TUNE QUERY

    Hi,
    I am having below two queries. 2nd query is taking more time & it gives time out error. Can anybody tell how to fine tune below query. Thanks.
    1st Query.
    SELECT EKETEBELN EKETEBELP EKETETENR EKETEINDT
             EKETMENGE EKETWEMNG
             INTO TABLE I_EKET
             FROM EKET
             WHERE EKETMENGE <> EKETWEMNG
                                             AND
                    EKET~EINDT IN  S_EINDT.
      DESCRIBE TABLE I_EKET LINES V_ZLINES.
      IF V_ZLINES > 0.
    2nd Query.
        SELECT EKKOEBELN EKKOAEDAT EKKOLIFNR EKPOEBELP EKPO~MATNR
               EKPO~WERKS
               EKPOLOEKZ EKPOELIKZ EKPOTXZ01 EKPONETPR LFA1~NAME1
               INTO TABLE I_PODEL
               FROM EKKO
               INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
               INNER JOIN LFA1 ON EKKOLIFNR = LFA1LIFNR
               FOR ALL ENTRIES IN I_EKET
               WHERE EKKO~EBELN = I_EKET-EBELN AND
                     EKPO~EBELP = I_EKET-EBELP AND
                     EKPO~MATNR IN  S_MATNR AND
                     EKPO~WERKS IN  S_WERKS AND
                     EKPO~WERKS NE 'W001'   AND
                     EKKO~EKORG = P_EKORG   AND
                     EKKO~LIFNR IN S_LIFNR  AND
                     EKKO~LOEKZ NE 'X'      AND
                     EKPO~LOEKZ NE 'S'      AND
                     EKPO~ELIKZ NE 'X'      AND
                     EKPO~LOEKZ NE 'L'      AND
                     EKKO~AEDAT IN  S_AEDAT.
      ELSE.
        WRITE 'No POs found for the selection criteria!'.
      ENDIF.

    Not the right forum to ask this question.
    VJ

  • Help in fine tuning this query

    My query id this,
    select a.event_id,a.document_id
    from sample_transaction a
    where exists (select 1 from sample_transaction b where b.event_id <> a.event_id and b.document_id = a.document_id );
    The execution plan is like this,
    SELECT STATEMENT Cost = 5596
    FILTER
    TABLE ACCESS FULL SAMPLE_TRANSACTION
    TABLE ACCESS BY INDEX ROWID SAMPLE_TRANSACTION
    INDEX RANGE SCAN I_SAMPLE_TRANSACTION_FK_EVT
    There are 6 million records in the table.
    How can i fine tune this query so that i get the results
    Example is
    my table has
    EVENT_ID DOCUMENT_ID
    100 200
    100 200
    101 201
    102 201
    103 203
    104 203
    105 204
    105 204
    106 106
    My result should be
    EVENT_ID DOCUMENT_ID
    101 201
    102 201
    103 203
    104 203
    null

    Based on your select statement, you will bring back every row in sample_transaction where the document is referenced by more than one event. Looking at it another way, the only rows skipped are those where the document is only used by one event.
    The full table scan is not necessarilly a problem since Oracle has to check all rows. You may improve performance if you add an index on document_id. That will allow Oracle to do a better query on the EXISTS clause. Remember to rebuild your statistics after adding the index.

  • Query fine tune.

    Dear All,
    I am using 11g version. The query given below.
    Sample Data:
    Table1: KEY ( It has 4 million records and DUR_UK column is unique key)
    PK
    DUR_UK
    1
    BD|4|J650|01AB|0001LLA|N01005309106|01003014101|0H9ZN|0HB0T|6970189|30748R2|001000
    2
    BD|506001022502|06076001901|0G1GF|0HB0T|7270478|2035772C91|000100
    3
    BD|J08005852109|10004001301|0HB0T|6971058|3551787C91|000100|03-MAY-10|31-DEC-99|3551787C91
    Table2: Section (It has 12k records)
    Column: FVC
    Data: OHBOT
    In table 1, there are 3 types of order for bold and underlined data. I need to get the PK, JVC from KEY table by JOINING with Section table based on bold and underlined field with FVC column.
    I tired with below query but it takes long time and didnt complete. Becoz it go thru 4 million records 3 times.
    SELECT A.PK,B.JVC
      FROM SECTION B
    INNER JOIN KEY A
        ON (REGEXP_SUBSTR(A.DUR_UK,'[^|]+',1,9) = B.FVC OR REGEXP_SUBSTR(A.DUR_UK,'[^|]+',1,5) = B.FVC OR REGEXP_SUBSTR(A.DUR_UK,'[^|]+',1,4) = B.FVC;
    The output could be like.
    PK  JVC
    1     OHBOT
    2     OHBOT
    3     OHBOT
    Can someone please help me out to fine tune.
    Thanks

    Hi,
    In a relational database, each column of each row should contain 1 piece of information, not a delimted list of several items.  This is so basic to database design that it's called First Normal Form.  Relational database are designed to work with data that is in First Normal Form.  Your table was not designed to work well, and it seems to be doing exactly what it was designed for.   This problem (and many others, no doubt) would be much simpler and much faster if each of the |-delimited items was on a separate row.
    If you must use the current design, avoid regular expressions.  You don't need all the power of regular expressions in this problem; you can get the results you need faster using less powerful tools, such as LIKE, INSTR and SUBSTR.
    Depending on your data and your requirements, you might try something like this:
    WITH  got_pos  AS
        SELECT  k.pk, k.dur_uk
        ,       s.jvc, s.fvc
        ,       INSTR (k.dur_uk, '|', 1, 3)  AS pos3
        ,       INSTR (k.dur_uk, '|', 1, 4)  AS pos4
        ,       INSTR (k.dur_uk, '|', 1, 5)  AS pos5
        ,       INSTR (k.dur_uk, '|', 1, 8)  AS pos8
        ,       INSTR (k.dur_uk, '|', 1, 9)  AS pos9
        FROM    section  s
        JOIN    key      k  ON  k.dur_uk  LIKE '%|' || s.fvc || '|%'
    SELECT  pk, jvc
    FROM    got_pos
    WHERE   fvc IN ( SUBSTR (dur_uk, pos3 + 1, pos4 - (pos3 + 1))
                   , SUBSTR (dur_uk, pos4 + 1, pos5 - (pos4 + 1))
                   , SUBSTR (dur_uk, pos8 + 1, pos9 - (pos8 + 1))
    Of course, without any sample data, I can't test this.
    Oracle Text might help with this problem.  I don't use it myself, but I believe it allows you to create indexes so that it's faster to find keywords (such as anyhting in section.fvc) anywhere in large strings (such as key.dur_uk).

  • Fine tune Query

    Hi , I would like to ask the expert here..how could i fine tune the below query..now it return data within 60 seconds. however my client require the data should return <5 second
    SELECT DECODE (CURR.START_DATE, '', PREV.START_DATE, CURR.START_DATE) START_DATE,
    DECODE (CURR.START_HOUR, '', PREV.START_HOUR, CURR.START_HOUR) START_HOUR,
    DECODE (CURR.IN_PARTNER, '', PREV.IN_PARTNER, CURR.IN_PARTNER) IN_PARTNER,
    DECODE (CURR.OUT_PARTNER, '', PREV.OUT_PARTNER, CURR.OUT_PARTNER) OUT_PARTNER,
    DECODE (CURR.SUBSCRIBER_TYPE, '', PREV.SUBSCRIBER_TYPE, CURR.SUBSCRIBER_TYPE) SUBSCRIBER_TYPE,
    DECODE (CURR.TRAFFIC_TYPE, '', PREV.TRAFFIC_TYPE, CURR.TRAFFIC_TYPE) TRAFFIC_TYPE,
    DECODE (CURR.EVENT_TYPE, '', PREV.EVENT_TYPE, CURR.EVENT_TYPE) EVENT_TYPE,
    DECODE (CURR.INTERVAL_PERIOD, '', PREV.INTERVAL_PERIOD, CURR.INTERVAL_PERIOD) INTERVAL_PERIOD,
    --DECODE (CURR.THRESHOLD, '', PREV.THRESHOLD, CURR.THRESHOLD) THRESHOLD,
    DECODE (CURR.CALLED_NO_GRP, '', PREV.CALLED_NO_GRP, CURR.CALLED_NO_GRP) CALLED_NO_GRP,
    SUM (DECODE (CURR.EVENT_COUNT, '', 0, CURR.EVENT_COUNT)) EVENT_COUNT,
    --SUM (DECODE (CURR.EVENT_DURATION, '', 0, CURR.EVENT_DURATION)) EVENT_DURATION,
    --SUM (DECODE (CURR.DATA_VOLUME, '', 0, CURR.DATA_VOLUME)) DATA_VOLUME,
    --AVG (DECODE (CURR.AVERAGE_DURATION, '', 0, CURR.AVERAGE_DURATION)) AVERAGE_DURATION,
    SUM (DECODE (PREV.EVENT_COUNT_PREV, '', 0, PREV.EVENT_COUNT_PREV)) EVENT_COUNT_PREV,
    --SUM ( DECODE (PREV.EVENT_DURATION_PREV, '', 0, PREV.EVENT_DURATION_PREV)) EVENT_DURATION_PREV,
    --SUM (DECODE (PREV.DATA_VOLUME_PREV, '', 0, PREV.DATA_VOLUME_PREV)) DATA_VOLUME_PREV,
    --AVG ( DECODE (PREV.AVERAGE_DURATION_PREV, '', 0, PREV.AVERAGE_DURATION_PREV)) AVERAGE_DURATION_PREV,
    ABS ( SUM (DECODE (CURR.EVENT_COUNT, '', 0, CURR.EVENT_COUNT)) - SUM ( DECODE (PREV.EVENT_COUNT_PREV, '', 0, PREV.EVENT_COUNT_PREV))) EVENT_COUNT_DIFF
    FROM ------------------------------- CURR
    (SELECT START_DATE,
    START_HOUR,
    IN_PARTNER,
    OUT_PARTNER,
    SUBSCRIBER_TYPE,
    TRAFFIC_TYPE,
    EVENT_TYPE,
    --rd_thr.param_value THRESHOLD,
    rd.param_value INTERVAL_PERIOD,
    CALLED_NO_GRP,
    --SUM (DATA_VOLUME)                                                                                                                       AS DATA_VOLUME,
    --SUM (EVENT_DURATION)                                                                                                                    AS EVENT_DURATION,
    --DECODE ( SUM (NVL (EVENT_COUNT / 1000000, 0)), 0, 0, ROUND ( SUM (EVENT_DURATION / 1000000) / SUM (NVL (EVENT_COUNT / 1000000, 0)), 2)) AS AVERAGE_DURATION,
    SUM (EVENT_COUNT) AS EVENT_COUNT
    FROM MSC_OUT_AGG,
    raid_t_parameters rd,
    raid_t_parameters rd_min,
    raid_t_parameters rd_max,
    raid_t_parameters rd_thr
    WHERE TRUNC (SYSDATE - TO_DATE (START_DATE, 'YYYYMMDD')) <= rd_min.param_value
    AND rd_min.param_id = 'histMD_IN_MSC'
    AND rd_min.param_id2 = 'DASHBOARD_THRESHOLD_MIN'
    AND rd.param_id = 'histMD_IN_MSC'
    AND rd.param_id2 = 'INTERVAL_PERIOD'
    AND rd_max.param_id = 'histMD_IN_MSC'
    AND rd_max.param_id2 = 'DASHBOARD_THRESHOLD_MAX'
    AND rd_thr.param_id = 'histMD_IN_MSC'
    AND rd_thr.param_id2 = 'PER_THRESHOLD_W'
    AND TO_DATE (START_DATE, 'YYYYMMDD') < SYSDATE - rd_max.param_value
    AND SOURCE = 'MD_IN_MSC_HUA'
    GROUP BY START_DATE,
    START_HOUR,
    IN_PARTNER,
    OUT_PARTNER,
    SUBSCRIBER_TYPE,
    TRAFFIC_TYPE,
    EVENT_TYPE,
    rd.param_value,
    CALLED_NO_GRP,
    rd_thr.param_value
    ) CURR
    FULL OUTER JOIN
    ---------------------------------- PREV --------------------------
    SELECT TO_CHAR ( TRUNC ( rd.param_value + TO_DATE (START_DATE, 'YYYYMMDD')), 'YYYYMMDD') START_DATE,
    START_HOUR,
    IN_PARTNER,
    OUT_PARTNER,
    SUBSCRIBER_TYPE,
    TRAFFIC_TYPE,
    EVENT_TYPE,
    rd.param_value INTERVAL_PERIOD,
    CALLED_NO_GRP,
    --rd_thr.param_value THRESHOLD,
    SUM (EVENT_COUNT) AS EVENT_COUNT_PREV
    --SUM (EVENT_DURATION)                                                                                                                    AS EVENT_DURATION_PREV,
    --DECODE ( SUM (NVL (EVENT_COUNT / 1000000, 0)), 0, 0, ROUND ( SUM (EVENT_DURATION / 1000000) / SUM (NVL (EVENT_COUNT / 1000000, 0)), 2)) AS AVERAGE_DURATION_PREV,
    --SUM (DATA_VOLUME)                                                                                                                       AS DATA_VOLUME_PREV
    FROM MSC_OUT_AGG,
    raid_t_parameters rd,
    raid_t_parameters rd_min,
    raid_t_parameters rd_max,
    raid_t_parameters rd_thr
    WHERE TRUNC ( SYSDATE - TRUNC ( rd.param_value + TO_DATE (START_DATE, 'YYYYMMDD'))) <= rd_min.param_value
    AND rd.param_id = 'histMD_IN_MSC'
    AND rd.param_id2 = 'INTERVAL_PERIOD'
    AND rd_min.param_id = 'histMD_IN_MSC'
    AND rd_min.param_id2 = 'DASHBOARD_THRESHOLD_MIN'
    AND rd_max.param_id = 'histMD_IN_MSC'
    AND rd_max.param_id2 = 'DASHBOARD_THRESHOLD_MAX'
    AND rd_thr.param_id = 'histMD_IN_MSC'
    AND rd_thr.param_id2 = 'PER_THRESHOLD_W'
    AND TRUNC ( rd.param_value + TO_DATE (START_DATE, 'YYYYMMDD')) < SYSDATE - rd_max.param_value
    AND SOURCE = 'MD_IN_MSC_HUA'
    GROUP BY TO_CHAR ( TRUNC ( rd.param_value + TO_DATE (START_DATE, 'YYYYMMDD')), 'YYYYMMDD'),
    START_HOUR,
    IN_PARTNER,
    OUT_PARTNER,
    SUBSCRIBER_TYPE,
    TRAFFIC_TYPE,
    EVENT_TYPE,
    rd.param_value,
    CALLED_NO_GRP,
    rd_thr.param_value
    ) PREV
    -------------------------- join ------------------
    ON ( CURR.START_DATE = PREV.START_DATE
    AND CURR.START_HOUR = PREV.START_HOUR
    AND CURR.IN_PARTNER = PREV.IN_PARTNER
    AND CURR.OUT_PARTNER = PREV.OUT_PARTNER
    AND CURR.SUBSCRIBER_TYPE = PREV.SUBSCRIBER_TYPE
    AND CURR.TRAFFIC_TYPE = PREV.TRAFFIC_TYPE
    AND CURR.INTERVAL_PERIOD = PREV.INTERVAL_PERIOD
    --AND CURR.THRESHOLD        = PREV.THRESHOLD
    AND CURR.EVENT_TYPE = PREV.EVENT_TYPE
    AND CURR.CALLED_NO_GRP = PREV.CALLED_NO_GRP)
    GROUP BY DECODE (CURR.START_DATE, '', PREV.START_DATE, CURR.START_DATE),
    DECODE (CURR.START_HOUR, '', PREV.START_HOUR, CURR.START_HOUR),
    DECODE (CURR.IN_PARTNER, '', PREV.IN_PARTNER, CURR.IN_PARTNER),
    DECODE (CURR.OUT_PARTNER, '', PREV.OUT_PARTNER, CURR.OUT_PARTNER),
    DECODE (CURR.SUBSCRIBER_TYPE, '', PREV.SUBSCRIBER_TYPE, CURR.SUBSCRIBER_TYPE),
    DECODE (CURR.TRAFFIC_TYPE, '', PREV.TRAFFIC_TYPE, CURR.TRAFFIC_TYPE),
    DECODE (CURR.INTERVAL_PERIOD, '', PREV.INTERVAL_PERIOD, CURR.INTERVAL_PERIOD),
    --DECODE (CURR.THRESHOLD, '', PREV.THRESHOLD, CURR.THRESHOLD),
    DECODE (CURR.EVENT_TYPE, '', PREV.EVENT_TYPE, CURR.EVENT_TYPE),
    DECODE (CURR.CALLED_NO_GRP, '', PREV.CALLED_NO_GRP, CURR.CALLED_NO_GRP);
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    I changed to query as below, however the performance not much difference compare to original
    WITH CURR AS
    SELECT /*+ MATERIALIZE */ START_DATE,
    START_HOUR,
    IN_PARTNER,
    OUT_PARTNER,
    SUBSCRIBER_TYPE,
    TRAFFIC_TYPE,
    EVENT_TYPE,
    --rd_thr.param_value THRESHOLD,
    rd.param_value INTERVAL_PERIOD,
    CALLED_NO_GRP,
    --SUM (DATA_VOLUME)                                                                                                                       AS DATA_VOLUME,
    --SUM (EVENT_DURATION)                                                                                                                    AS EVENT_DURATION,
    --DECODE ( SUM (NVL (EVENT_COUNT / 1000000, 0)), 0, 0, ROUND ( SUM (EVENT_DURATION / 1000000) / SUM (NVL (EVENT_COUNT / 1000000, 0)), 2)) AS AVERAGE_DURATION,
    SUM (EVENT_COUNT) AS EVENT_COUNT
    FROM MSC_OUT_AGG,
    raid_t_parameters rd,
    raid_t_parameters rd_min,
    raid_t_parameters rd_max,
    raid_t_parameters rd_thr
    WHERE TRUNC (SYSDATE - TO_DATE (START_DATE, 'YYYYMMDD')) <= rd_min.param_value
    AND rd_min.param_id = 'histMD_IN_MSC'
    AND rd_min.param_id2 = 'DASHBOARD_THRESHOLD_MIN'
    AND rd.param_id = 'histMD_IN_MSC'
    AND rd.param_id2 = 'INTERVAL_PERIOD'
    AND rd_max.param_id = 'histMD_IN_MSC'
    AND rd_max.param_id2 = 'DASHBOARD_THRESHOLD_MAX'
    AND rd_thr.param_id = 'histMD_IN_MSC'
    AND rd_thr.param_id2 = 'PER_THRESHOLD_W'
    AND TO_DATE (START_DATE, 'YYYYMMDD') < SYSDATE - rd_max.param_value
    AND SOURCE = 'MD_IN_MSC_HUA'
    GROUP BY START_DATE,
    START_HOUR,
    IN_PARTNER,
    OUT_PARTNER,
    SUBSCRIBER_TYPE,
    TRAFFIC_TYPE,
    EVENT_TYPE,
    rd.param_value,
    CALLED_NO_GRP,
    rd_thr.param_value
    ), PREV AS
    SELECT /*+ MATERIALIZE */ TO_CHAR ( TRUNC ( rd.param_value + TO_DATE (START_DATE, 'YYYYMMDD')), 'YYYYMMDD') START_DATE,
    START_HOUR,
    IN_PARTNER,
    OUT_PARTNER,
    SUBSCRIBER_TYPE,
    TRAFFIC_TYPE,
    EVENT_TYPE,
    rd.param_value INTERVAL_PERIOD,
    CALLED_NO_GRP,
    --rd_thr.param_value THRESHOLD,
    SUM (EVENT_COUNT) AS EVENT_COUNT_PREV
    --SUM (EVENT_DURATION)                                                                                                                    AS EVENT_DURATION_PREV,
    --DECODE ( SUM (NVL (EVENT_COUNT / 1000000, 0)), 0, 0, ROUND ( SUM (EVENT_DURATION / 1000000) / SUM (NVL (EVENT_COUNT / 1000000, 0)), 2)) AS AVERAGE_DURATION_PREV,
    --SUM (DATA_VOLUME)                                                                                                                       AS DATA_VOLUME_PREV
    FROM MSC_OUT_AGG,
    raid_t_parameters rd,
    raid_t_parameters rd_min,
    raid_t_parameters rd_max,
    raid_t_parameters rd_thr
    WHERE TRUNC ( SYSDATE - TRUNC ( rd.param_value + TO_DATE (START_DATE, 'YYYYMMDD'))) <= rd_min.param_value
    AND rd.param_id = 'histMD_IN_MSC'
    AND rd.param_id2 = 'INTERVAL_PERIOD'
    AND rd_min.param_id = 'histMD_IN_MSC'
    AND rd_min.param_id2 = 'DASHBOARD_THRESHOLD_MIN'
    AND rd_max.param_id = 'histMD_IN_MSC'
    AND rd_max.param_id2 = 'DASHBOARD_THRESHOLD_MAX'
    AND rd_thr.param_id = 'histMD_IN_MSC'
    AND rd_thr.param_id2 = 'PER_THRESHOLD_W'
    AND TRUNC ( rd.param_value + TO_DATE (START_DATE, 'YYYYMMDD')) < SYSDATE - rd_max.param_value
    AND SOURCE = 'MD_IN_MSC_HUA'
    GROUP BY TO_CHAR ( TRUNC ( rd.param_value + TO_DATE (START_DATE, 'YYYYMMDD')), 'YYYYMMDD'),
    START_HOUR,
    IN_PARTNER,
    OUT_PARTNER,
    SUBSCRIBER_TYPE,
    TRAFFIC_TYPE,
    EVENT_TYPE,
    rd.param_value,
    CALLED_NO_GRP,
    rd_thr.param_value
    SELECT /*+ USE_HASH(T1 T2) */ DECODE (CURR.START_DATE, '', PREV.START_DATE, CURR.START_DATE) START_DATE,
    DECODE (CURR.START_HOUR, '', PREV.START_HOUR, CURR.START_HOUR) START_HOUR,
    DECODE (CURR.IN_PARTNER, '', PREV.IN_PARTNER, CURR.IN_PARTNER) IN_PARTNER,
    DECODE (CURR.OUT_PARTNER, '', PREV.OUT_PARTNER, CURR.OUT_PARTNER) OUT_PARTNER,
    DECODE (CURR.SUBSCRIBER_TYPE, '', PREV.SUBSCRIBER_TYPE, CURR.SUBSCRIBER_TYPE) SUBSCRIBER_TYPE,
    DECODE (CURR.TRAFFIC_TYPE, '', PREV.TRAFFIC_TYPE, CURR.TRAFFIC_TYPE) TRAFFIC_TYPE,
    DECODE (CURR.EVENT_TYPE, '', PREV.EVENT_TYPE, CURR.EVENT_TYPE) EVENT_TYPE,
    DECODE (CURR.INTERVAL_PERIOD, '', PREV.INTERVAL_PERIOD, CURR.INTERVAL_PERIOD) INTERVAL_PERIOD,
    --DECODE (CURR.THRESHOLD, '', PREV.THRESHOLD, CURR.THRESHOLD) THRESHOLD,
    DECODE (CURR.CALLED_NO_GRP, '', PREV.CALLED_NO_GRP, CURR.CALLED_NO_GRP) CALLED_NO_GRP,
    SUM (DECODE (CURR.EVENT_COUNT, '', 0, CURR.EVENT_COUNT)) EVENT_COUNT,
    --SUM (DECODE (CURR.EVENT_DURATION, '', 0, CURR.EVENT_DURATION)) EVENT_DURATION,
    --SUM (DECODE (CURR.DATA_VOLUME, '', 0, CURR.DATA_VOLUME)) DATA_VOLUME,
    --AVG (DECODE (CURR.AVERAGE_DURATION, '', 0, CURR.AVERAGE_DURATION)) AVERAGE_DURATION,
    SUM (DECODE (PREV.EVENT_COUNT_PREV, '', 0, PREV.EVENT_COUNT_PREV)) EVENT_COUNT_PREV,
    --SUM ( DECODE (PREV.EVENT_DURATION_PREV, '', 0, PREV.EVENT_DURATION_PREV)) EVENT_DURATION_PREV,
    --SUM (DECODE (PREV.DATA_VOLUME_PREV, '', 0, PREV.DATA_VOLUME_PREV)) DATA_VOLUME_PREV,
    --AVG ( DECODE (PREV.AVERAGE_DURATION_PREV, '', 0, PREV.AVERAGE_DURATION_PREV)) AVERAGE_DURATION_PREV,
    ABS ( SUM (DECODE (CURR.EVENT_COUNT, '', 0, CURR.EVENT_COUNT)) - SUM ( DECODE (PREV.EVENT_COUNT_PREV, '', 0, PREV.EVENT_COUNT_PREV))) EVENT_COUNT_DIFF
    FROM CURR
    FULL OUTER JOIN
    PREV
    ON ( CURR.START_DATE = PREV.START_DATE
    AND CURR.START_HOUR = PREV.START_HOUR
    AND CURR.IN_PARTNER = PREV.IN_PARTNER
    AND CURR.OUT_PARTNER = PREV.OUT_PARTNER
    AND CURR.SUBSCRIBER_TYPE = PREV.SUBSCRIBER_TYPE
    AND CURR.TRAFFIC_TYPE = PREV.TRAFFIC_TYPE
    AND CURR.INTERVAL_PERIOD = PREV.INTERVAL_PERIOD
    --AND CURR.THRESHOLD           = PREV.THRESHOLD
    AND CURR.EVENT_TYPE = PREV.EVENT_TYPE
    AND CURR.CALLED_NO_GRP = PREV.CALLED_NO_GRP)
    GROUP BY DECODE (CURR.START_DATE, '', PREV.START_DATE, CURR.START_DATE),
    DECODE (CURR.START_HOUR, '', PREV.START_HOUR, CURR.START_HOUR),
    DECODE (CURR.IN_PARTNER, '', PREV.IN_PARTNER, CURR.IN_PARTNER),
    DECODE (CURR.OUT_PARTNER, '', PREV.OUT_PARTNER, CURR.OUT_PARTNER),
    DECODE (CURR.SUBSCRIBER_TYPE, '', PREV.SUBSCRIBER_TYPE, CURR.SUBSCRIBER_TYPE),
    DECODE (CURR.TRAFFIC_TYPE, '', PREV.TRAFFIC_TYPE, CURR.TRAFFIC_TYPE),
    DECODE (CURR.INTERVAL_PERIOD, '', PREV.INTERVAL_PERIOD, CURR.INTERVAL_PERIOD),
    --DECODE (CURR.THRESHOLD, '', PREV.THRESHOLD, CURR.THRESHOLD),
    DECODE (CURR.EVENT_TYPE, '', PREV.EVENT_TYPE, CURR.EVENT_TYPE),
    DECODE (CURR.CALLED_NO_GRP, '', PREV.CALLED_NO_GRP, CURR.CALLED_NO_GRP);

  • SQL stmt fine tunning

    Hi DBA,
    i am new to this field.
    i can see from EM some sql are taking 8%- 95% of Db . i get the SQL_ID from the Em how to fine tune this?
    also can you please help me out with some standard recommendations to run the DB in best manner.
    Thanks in advance.

    As a generic recommendation for slow sql queries, read the following thread ,
    When your query takes too long ...
    HTH
    Aman....

  • Fine Tune Procedure

    Hi, Everyone,
    My oracle database version is oracle 11.2.0.1.
    I am running this procedure in a pl/sql package.  When i the process comes to running this process it does not come back.  Could you please help me to fine tune this procedure
    PROCEDURE ICM_MIN_PR_DIFF        
    (V_LOW IN NUMBER,
    V_UP IN NUMBER)
    AS
    L_INS_TABLE VARCHAR2(4000);
    L_QRY_1_PART VARCHAR2(4000);
    L_QRY_2_PART VARCHAR2(4000);
    L_QRY_3_PART VARCHAR2(4000);
    L_QRY_POPULATE VARCHAR2(4000);
    BEGIN
    EXECUTE IMMEDIATE 'TRUNCATE TABLE ICM_MIN_PRDIFF_0';
    L_QRY_1_PART := '    select  a.customer_no,a.pr_code_bbl,a.score,min(b.price_diff) price_diff, a.flag
    from ICM_MAX_SCORE_0 a, icm b
    where 
    a.customer_no = b.customer_no
    and a.pr_code_bb=b.pr_code_bb
    and a.score = b.score
    and a.flag = b.flag
    and b.price_diff > 0
    and b.score >=0.5
    and b.flag = 0
    and b.price_diff > ';
    L_QRY_2_PART := ' AND  b.price_diff <= ';
    L_QRY_3_PART := ' GROUP BY a.customer_no,a.pr_code_bb,a.score,a.flag ';
    L_QRY_POPULATE := L_QRY_1_PART || V_LOW ||L_QRY_2_PART || V_UP || L_QRY_3_PART;
    --Construct Insertion Statment by appending the Query Statement
    L_INS_TABLE := 'INSERT /*APPEND */ INTO ICM_MIN_PRDIFF_0 ' ||
    L_QRY_POPULATE;
    --DBMS_OUTPUT.PUT_LINE(L_INS_TABLE);
    DBMS_OUTPUT.PUT_LINE('POPULATED ICM_MIN_PRDIFF_0');
    EXECUTE IMMEDIATE L_INS_TABLE;
    COMMIT;
    END ICM_MIN_PR_DIFF;
    The following is the explain plan for the query
    plan FOR succeeded.
    PLAN_TABLE_OUTPUT                                                                                                                                                                                                                                                                                         
    Plan hash value: 636749222                                                                                                                                                                                                                                                                                  
    | Id  | Operation                | Name                           | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |                                                                                                                                                                                         
    |   0 | INSERT STATEMENT         |                                |  1390K|   132M|       |  1796K  (1)| 05:59:13 |                                                                                                                                                                                         
    |   1 |  LOAD TABLE CONVENTIONAL | ICM_MIN_PRDIFF_0 |       |       |       |            |          |                                                                                                                                                                                         
    |   2 |   HASH GROUP BY          |                                |  1390K|   132M|   155M|  1796K  (1)| 05:59:13 |                                                                                                                                                                                         
    |*  3 |    HASH JOIN             |                                |  1390K|   132M|    68M|  1764K  (1)| 05:52:54 |                                                                                                                                                                                         
    |*  4 |     TABLE ACCESS FULL    | ICM_MAX_SCORE_0 |  1390K|    53M|       |  2478   (1)| 00:00:30 |                                                                                                                                                                                         
    |*  5 |     TABLE ACCESS FULL    | ICM                |    10M|   611M|       |  1722K  (1)| 05:44:26 |                                                                                                                                                                                         
    Predicate Information (identified by operation id):                                                                                                                                                                                                                                                         
       3 - access("A"."CUSTOMER_NO"="B"."CUSTOMER_NO" AND "A"."PR_CODE_BB"="B"."PR_CODE_BB" AND                                                                                                                                                                                                               
                  "A"."SCORE"="B"."SCORE" AND "A"."FLAG"="B"."FLAG")                                                                                                                                                                                                                                            
       4 - filter("A"."FLAG"=0 AND "A"."SCORE">=0.5)                                                                                                                                                                                                                                                            
       5 - filter("B"."PRICE_DIFF"<=10 AND "B"."SCORE">=0.5 AND "B"."PRICE_DIFF">0 AND "B"."FLAG"=0)                                                                                                                                                                                                            
    20 rows selected
    select count(1) from ICM_MAX_SCORE_0 = 1390409
    select count(1) from ICM = 586260240

    please look at the explain plan for the sql after implementing your advice
    explain plan for
    insert /*+ append */ into ICM_MIN_PRDIFF_0 (customer_no,pr_code_bb,score,price_diff,flag)
    select  a.customer_no,a.pr_code_bb,a.score,min(b.price_diff) price_diff, a.flag
    from ICM_MAX_SCORE_0 a, icm b
    where   a.customer_no = b.customer_no
    and a.pr_code_bb=b.pr_code_bb
    and a.score = b.score
    and a.flag = b.flag
    and b.price_diff > 0
    and b.score >=0.5
    and b.flag = 0
    and b.price_diff > 0
    AND  b.price_diff <= 10
    GROUP BY a.customer_no,a.pr_code_bb,a.score,a.flag ;
    SELECT * FROM TABLE(dbms_xplan.display);
    plan FOR succeeded.
    PLAN_TABLE_OUTPUT                                                                                                                                                                                                                                                                                         
    Plan hash value: 4089758326                                                                                                                                                                                                                                                                                 
    | Id  | Operation            | Name                           | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |                                                                                                                                                                                             
    |   0 | INSERT STATEMENT     |                                |  1390K|   132M|       |  1796K  (1)| 05:59:13 |                                                                                                                                                                                             
    |   1 |  LOAD AS SELECT      | ICM_MIN_PRDIFF_0 |       |       |       |            |          |                                                                                                                                                                                             
    |   2 |   HASH GROUP BY      |                                |  1390K|   132M|   155M|  1796K  (1)| 05:59:13 |                                                                                                                                                                                             
    |*  3 |    HASH JOIN         |                                |  1390K|   132M|    68M|  1764K  (1)| 05:52:54 |                                                                                                                                                                                             
    |*  4 |     TABLE ACCESS FULL| ICM_MAX_SCORE_0 |  1390K|    53M|       |  2478   (1)| 00:00:30 |                                                                                                                                                                                             
    |*  5 |     TABLE ACCESS FULL| ICM                |    10M|   611M|       |  1722K  (1)| 05:44:26 |                                                                                                                                                                                             
    Predicate Information (identified by operation id):                                                                                                                                                                                                                                                         
       3 - access("A"."CUSTOMER_NO"="B"."CUSTOMER_NO" AND "A"."PR_CODE_BB"="B"."PR_CODE_BB" AND                                                                                                                                                                                                               
                  "A"."SCORE"="B"."SCORE" AND "A"."FLAG"="B"."FLAG")                                                                                                                                                                                                                                            
       4 - filter("A"."FLAG"=0 AND "A"."SCORE">=0.5)                                                                                                                                                                                                                                                            
       5 - filter("B"."PRICE_DIFF"<=10 AND "B"."SCORE">=0.5 AND "B"."PRICE_DIFF">0 AND "B"."FLAG"=0)                                                                                                                                                                                                            
    20 rows selected

  • HELP TO TUNE THIS QUERY

    Hi,
    I'm using below query in procedure.It's taking more more time can some one help to tune this query or advice to rewrite the query.
    Databse :10.1
    SELECT   'Reading Comprehension' TEST_NAME,T.TEST_END_DATE TEST_SESSION_DATE,
            C.POOL_VERSION_ID, I.CREATED_ON POOL_CREATED_DT,
            C.ITEM_ID, C.ITEM_RESPONSE_ID, S.STUDENT_ID_PK, C.RESPONSE_KEY, C.IS_CORRECT RESPONSE_IS_CORRECT,
            T.SCORE SCALE_SCORE, C.RESPONSE_DURATION, P.ITEM_KEY,
            T.TEST_SESSION_DETAIL_ID, SYSDATE CREATED_ON
           -- BULK COLLECT INTO TV_PSYCHO_DET
            FROM
            CAT_ITEM_PARAMETER P, CAT_ITEM_USER_RESPONSE C, TEST_SESSION_DETAIL T,
            TEST_SESSION S, ITEM_POOL_VERSION I, TEST_DETAIL D
            ,INSTITUTION E
            WHERE  TRUNC(T.TEST_END_DATE) BETWEEN TO_DATE('01-11-09','dd-mm-yy') AND TO_DATE('30-11-09','dd-mm-yy')
            AND D.TEST_NAME =  'Reading Comprehension'
            AND T.TEST_SESSION_STATUS_ID = 3
            AND I.POOL_AVAILABILITY='Y'
            AND P.PRETEST=0 AND C.RESTART_FLAG=0
            AND T.TEST_DETAIL_ID = D.TEST_DETAIL_ID
            AND S.TEST_SESSION_ID = T.TEST_SESSION_ID
            AND C.TEST_SESSION_DETAIL_ID = T.TEST_SESSION_DETAIL_ID
            AND S.INSTITUTION_ID=E.INSTITUTION_ID
            AND SUBSTR(E.INSTITUTION_ID_DISPLAY,8,3) <> '000'
            AND I.ITEM_ID = C.ITEM_ID
            AND P.ITEM_ID = I.ITEM_ID;expln plan
    Plan hash value: 3712814491                                                                                                      
    | Id  | Operation                                 | Name                        | Rows  | Bytes | Cost (%CPU)| Time     | Pstart|
    Pstop |                                                                                                                          
    |   0 | SELECT STATEMENT                          |                             | 50857 |  7151K| 93382   (1)| 00:18:41 |       |
          |                                                                                                                          
    |*  1 |  FILTER                                   |                             |       |       |            |          |       |
          |                                                                                                                          
    |*  2 |   HASH JOIN                               |                             | 50857 |  7151K| 93382   (1)| 00:18:41 |       |
          |                                                                                                                          
    |   3 |    PARTITION HASH ALL                     |                             |  2312 | 23120 |    25   (0)| 00:00:01 |     1 |
        5 |                                                                                                                          
    |*  4 |     TABLE ACCESS FULL                     | CAT_ITEM_PARAMETER          |  2312 | 23120 |    25   (0)| 00:00:01 |     1 |
        5 |                                                                                                                          
    |*  5 |    HASH JOIN                              |                             | 94938 |    12M| 93356   (1)| 00:18:41 |       |
          |                                                                                                                          
    |*  6 |     TABLE ACCESS FULL                     | ITEM_POOL_VERSION           |  9036 |   132K|    30   (0)| 00:00:01 |       |
          |                                                                                                                          
    |*  7 |     TABLE ACCESS BY GLOBAL INDEX ROWID    | CAT_ITEM_USER_RESPONSE      |     9 |   279 |    18   (0)| 00:00:01 | ROWID |
    ROWID |                                                                                                                          
    |   8 |      NESTED LOOPS                         |                             | 45349 |  5270K| 93325   (1)| 00:18:40 |       |
          |                                                                                                                          
    |*  9 |       HASH JOIN                           |                             |  4923 |   423K| 11377   (1)| 00:02:17 |       |
          |                                                                                                                          
    |* 10 |        INDEX FAST FULL SCAN               | INSTI_ID_NAME_COUN_DISP_IDX |  8165 |   111K|    18   (0)| 00:00:01 |       |
          |                                                                                                                          
    |* 11 |        HASH JOIN                          |                             |  4923 |   355K| 11359   (1)| 00:02:17 |       |
          |                                                                                                                          
    |* 12 |         TABLE ACCESS BY GLOBAL INDEX ROWID| TEST_SESSION_DETAIL         |  4107 |   148K|  6804   (1)| 00:01:22 | ROWID |
    ROWID |                                                                                                                          
    |  13 |          NESTED LOOPS                     |                             |  4923 |   278K|  6806   (1)| 00:01:22 |       |
          |                                                                                                                          
    |* 14 |           INDEX RANGE SCAN                | TEST_DETAIL_AK_1            |     1 |    21 |     2   (0)| 00:00:01 |       |
          |                                                                                                                          
    |* 15 |           INDEX RANGE SCAN                | TEST_SESSION_DETAIL_FK2_I   | 39737 |       |   102   (0)| 00:00:02 |       |
          |                                                                                                                          
    |  16 |         PARTITION HASH ALL                |                             |  1672K|    25M|  4546   (1)| 00:00:55 |     1 |
        5 |                                                                                                                          
    |  17 |          TABLE ACCESS FULL                | TEST_SESSION                |  1672K|    25M|  4546   (1)| 00:00:55 |     1 |
        5 |                                                                                                                          
    |* 18 |       INDEX RANGE SCAN                    | CAT_ITEM_USER_RESP_IDX1     |    18 |       |     3   (0)| 00:00:01 |       |
          |                                                                                                                          
    Predicate Information (identified by operation id):                                                                              
       1 - filter(TO_DATE('01-11-09','dd-mm-yy')<=TO_DATE('30-11-09','dd-mm-yy'))                                                    
       2 - access("P"."ITEM_ID"="I"."ITEM_ID")                                                                                       
       4 - filter("P"."PRETEST"=0)                                                                                                   
       5 - access("I"."ITEM_ID"="C"."ITEM_ID")                                                                                       
       6 - filter("I"."POOL_AVAILABILITY"='Y')                                                                                       
       7 - filter(TO_NUMBER("C"."RESTART_FLAG")=0)                                                                                   
       9 - access("S"."INSTITUTION_ID"="E"."INSTITUTION_ID")                                                                         
      10 - filter(SUBSTR("E"."INSTITUTION_ID_DISPLAY",8,3)<>'000')                                                                   
      11 - access("S"."TEST_SESSION_ID"="T"."TEST_SESSION_ID")                                                                       
      12 - filter(TRUNC(INTERNAL_FUNCTION("T"."TEST_END_DATE"))>=TO_DATE('01-11-09','dd-mm-yy') AND "T"."TEST_SESSION_STATUS_ID"=3   
                  AND TRUNC(INTERNAL_FUNCTION("T"."TEST_END_DATE"))<=TO_DATE('30-11-09','dd-mm-yy'))                                 
      14 - access("D"."TEST_NAME"='Reading Comprehension')                                                                           
      15 - access("T"."TEST_DETAIL_ID"="D"."TEST_DETAIL_ID")                                                                         
      18 - access("C"."TEST_SESSION_DETAIL_ID"="T"."TEST_SESSION_DETAIL_ID")                                                         
    43 rows selected.Edited by: user575115 on Dec 18, 2009 12:31 AM

    When you see something like ...
       7 - filter(TO_NUMBER("C"."RESTART_FLAG")=0)                                                                                    It means that Oracle had to do a conversion for you since you aren't using the proper data type in your query.
    That would mean IF there is an index on that column, it won't be useable...

  • Sql Query Tuning. Please help me to tune this query

    Hi All ,
    I have this problematic Sql . It is taking huge time to execute. It contains a view CIDV, which i think is the bottleneck.
    I have pasted the query below. I will be pasting TKPROF and explain plan for the same. Please advice me to tune this query.
    SELECT GCC.SEGMENT1 || '.' || GCC.SEGMENT2 || '.' || GCC.SEGMENT3 || '.' ||
           GCC.SEGMENT4 || '.' || GCC.SEGMENT5 || '.' || GCC.SEGMENT6 || '.' ||
           GCC.SEGMENT7 || '.' || GCC.SEGMENT8 || '.' || GCC.SEGMENT9 OFFSET_ACCOUNT,
           OOD.ORGANIZATION_CODE,
           CIDV.SUBINVENTORY_CODE OFFSET_SUBINV,
           MIL.SEGMENT1 || '.' || MIL.SEGMENT2 || '.' || MIL.SEGMENT3 || '.' ||
           MIL.SEGMENT4 || '.' || MIL.SEGMENT5 OFFSET_LOCATOR,
           CIDV.LAST_UPDATE_LOGIN
      FROM APPS.CST_INV_DISTRIBUTION_V       CIDV,
           APPS.GL_CODE_COMBINATIONS         GCC,
           APPS.MTL_ITEM_LOCATIONS           MIL,
           APPS.ORG_ORGANIZATION_DEFINITIONS OOD
    WHERE CIDV.TRANSACTION_ID = :B2
       AND CIDV.PRIMARY_QUANTITY = (-1) * :B1
       AND CIDV.REFERENCE_ACCOUNT = GCC.CODE_COMBINATION_ID
       AND OOD.ORGANIZATION_ID = CIDV.ORGANIZATION_ID
       AND MIL.INVENTORY_LOCATION_ID = CIDV.LOCATOR_ID
       AND GCC.ACCOUNT_TYPE = 'A'****************
    TKPROF
    call     count       cpu    elapsed       disk      query    current        rows
    Parse        1      0.00       0.00          0          0          0           0
    Execute  68337     10.32      10.32          0          0          0           0
    Fetch    68337    229.75     936.36      58819    6743323       1121       68232
    total   136675    240.07     946.69      58819    6743323       1121       68232
    Misses in library cache during parse: 1
    Misses in library cache during execute: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 203     (recursive depth: 1)
    Number of plan statistics captured: 1
    Rows (1st) Rows (avg) Rows (max)  Row Source Operation
             1          1          1  MERGE JOIN CARTESIAN (cr=102 pr=15 pw=0 time=193608 us cost=56 size=219 card=1)
             1          1          1   NESTED LOOPS  (cr=100 pr=15 pw=0 time=193483 us cost=53 size=219 card=1)
             1          1          1    NESTED LOOPS  (cr=99 pr=15 pw=0 time=193407 us cost=52 size=215 card=1)
             1          1          1     NESTED LOOPS  (cr=96 pr=15 pw=0 time=193378 us cost=51 size=190 card=1)
             1          1          1      NESTED LOOPS  (cr=93 pr=15 pw=0 time=193284 us cost=49 size=162 card=1)
             1          1          1       NESTED LOOPS  (cr=89 pr=14 pw=0 time=185515 us cost=46 size=138 card=1)
             1          1          1        NESTED LOOPS  (cr=85 pr=12 pw=0 time=157975 us cost=44 size=81 card=1)
             1          1          1         NESTED LOOPS  (cr=83 pr=12 pw=0 time=157925 us cost=43 size=73 card=1)
             1          1          1          NESTED LOOPS  (cr=81 pr=12 pw=0 time=157641 us cost=43 size=132 card=2)
             1          1          1           VIEW  CST_INV_DISTRIBUTION_V (cr=78 pr=12 pw=0 time=156386 us cost=41 size=118 card=2)
             1          1          1            UNION-ALL  (cr=78 pr=12 pw=0 time=156378 us)
             0          0          0             NESTED LOOPS OUTER (cr=44 pr=9 pw=0 time=124997 us cost=20 size=291 card=1)
             0          0          0              NESTED LOOPS  (cr=44 pr=9 pw=0 time=124993 us cost=18 size=255 card=1)
             0          0          0               NESTED LOOPS  (cr=44 pr=9 pw=0 time=124990 us cost=18 size=251 card=1)
            33         33         33                MERGE JOIN CARTESIAN (cr=25 pr=6 pw=0 time=98544 us cost=14 size=192 card=1)
             1          1          1                 NESTED LOOPS OUTER (cr=22 pr=5 pw=0 time=85754 us cost=12 size=156 card=1)
             1          1          1                  NESTED LOOPS  (cr=19 pr=4 pw=0 time=79830 us cost=10 size=120 card=1)
             1          1          1                   NESTED LOOPS OUTER (cr=17 pr=4 pw=0 time=79813 us cost=9 size=113 card=1)
             1          1          1                    NESTED LOOPS  (cr=15 pr=4 pw=0 time=79752 us cost=8 size=106 card=1)
             1          1          1                     NESTED LOOPS  (cr=11 pr=2 pw=0 time=43120 us cost=6 size=93 card=1)
             1          1          1                      NESTED LOOPS  (cr=7 pr=2 pw=0 time=43087 us cost=4 size=83 card=1)
             1          1          1                       NESTED LOOPS  (cr=6 pr=2 pw=0 time=43072 us cost=4 size=80 card=1)
             1          1          1                        TABLE ACCESS BY INDEX ROWID MTL_MATERIAL_TRANSACTIONS (cr=5 pr=2 pw=0 time=43042 us cost=4 size=76 card=1)
             1          1          1                         INDEX UNIQUE SCAN MTL_MATERIAL_TRANSACTIONS_U1 (cr=4 pr=2 pw=0 time=43011 us cost=3 size=0 card=1)(object id 12484094)
             1          1          1                        INDEX UNIQUE SCAN MTL_TRANSACTION_TYPES_U1 (cr=1 pr=0 pw=0 time=20 us cost=0 size=764 card=191)(object id 9983)
             1          1          1                       INDEX UNIQUE SCAN MTL_TXN_SOURCE_TYPES_U1 (cr=1 pr=0 pw=0 time=7 us cost=0 size=54 card=18)(object id 9987)
             1          1          1                      INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_B_U1 (cr=4 pr=0 pw=0 time=27 us cost=2 size=736324450 card=73632445)(object id 12484155)
             1          1          1                     INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_TL_U1 (cr=4 pr=2 pw=0 time=36626 us cost=2 size=957481070 card=73652390)(object id 12484137)
             1          1          1                    TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=42 us cost=1 size=3290 card=470)
             1          1          1                     INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=28 us cost=0 size=0 card=1)(object id 9847)
             1          1          1                   TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=12 us cost=1 size=3290 card=470)
             1          1          1                    INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=7 us cost=0 size=0 card=1)(object id 9847)
             0          0          0                  INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=1 pw=0 time=5915 us cost=2 size=36 card=1)(object id 705891)
            33         33         33                 BUFFER SORT (cr=3 pr=1 pw=0 time=12713 us cost=12 size=36 card=1)
            33         33         33                  INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=1 pw=0 time=12582 us cost=2 size=36 card=1)(object id 705891)
             0          0          0                TABLE ACCESS BY INDEX ROWID MTL_TRANSACTION_ACCOUNTS (cr=19 pr=3 pw=0 time=26591 us cost=4 size=59 card=1)
            66         66         66                 INDEX RANGE SCAN MTL_TRANSACTION_ACCOUNTS_N1 (cr=18 pr=2 pw=0 time=13607 us cost=3 size=0 card=3)(object id 12484127)
             0          0          0               INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=0 pr=0 pw=0 time=0 us cost=0 size=4 card=1)(object id 9847)
             0          0          0              INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=36 card=1)(object id 705891)
             1          1          1             NESTED LOOPS  (cr=34 pr=3 pw=0 time=31269 us cost=21 size=288 card=1)
             1          1          1              NESTED LOOPS  (cr=30 pr=3 pw=0 time=31161 us cost=19 size=275 card=1)
             1          1          1               NESTED LOOPS  (cr=26 pr=3 pw=0 time=31105 us cost=17 size=265 card=1)
             1          1          1                NESTED LOOPS  (cr=25 pr=3 pw=0 time=31082 us cost=17 size=261 card=1)
             1          1          1                 NESTED LOOPS OUTER (cr=23 pr=3 pw=0 time=31027 us cost=16 size=254 card=1)
             1          1          1                  NESTED LOOPS  (cr=21 pr=3 pw=0 time=30980 us cost=15 size=247 card=1)
             1          1          1                   NESTED LOOPS  (cr=20 pr=3 pw=0 time=30957 us cost=15 size=243 card=1)
             1          1          1                    NESTED LOOPS OUTER (cr=19 pr=3 pw=0 time=30926 us cost=15 size=240 card=1)
             1          1          1                     NESTED LOOPS  (cr=16 pr=3 pw=0 time=30389 us cost=13 size=204 card=1)
             1          1          1                      NESTED LOOPS  (cr=11 pr=0 pw=0 time=665 us cost=9 size=131 card=1)
             1          1          1                       NESTED LOOPS OUTER (cr=8 pr=0 pw=0 time=306 us cost=7 size=95 card=1)
             1          1          1                        TABLE ACCESS BY INDEX ROWID MTL_TRANSACTION_ACCOUNTS (cr=5 pr=0 pw=0 time=37 us cost=5 size=59 card=1)
             2          2          2                         INDEX RANGE SCAN MTL_TRANSACTION_ACCOUNTS_N1 (cr=4 pr=0 pw=0 time=17 us cost=4 size=0 card=3)(object id 12484127)
             1          1          1                        INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=0 pw=0 time=216 us cost=2 size=36 card=1)(object id 705891)
             1          1          1                       INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=0 pw=0 time=352 us cost=2 size=36 card=1)(object id 705891)
             1          1          1                      TABLE ACCESS BY INDEX ROWID MTL_MATERIAL_TRANSACTIONS (cr=5 pr=3 pw=0 time=29716 us cost=4 size=73 card=1)
             1          1          1                       INDEX RANGE SCAN MTL_MATERIAL_TRANSACTIONS_N23 (cr=4 pr=3 pw=0 time=29588 us cost=3 size=0 card=1)(object id 12484133)
             0          0          0                     INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=0 pw=0 time=520 us cost=2 size=36 card=1)(object id 705891)
             1          1          1                    INDEX UNIQUE SCAN MTL_TXN_SOURCE_TYPES_U1 (cr=1 pr=0 pw=0 time=22 us cost=0 size=3 card=1)(object id 9987)
             1          1          1                   INDEX UNIQUE SCAN MTL_TRANSACTION_TYPES_U1 (cr=1 pr=0 pw=0 time=16 us cost=0 size=4 card=1)(object id 9983)
             1          1          1                  TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=34 us cost=1 size=7 card=1)
             1          1          1                   INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=19 us cost=0 size=0 card=1)(object id 9847)
             1          1          1                 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=44 us cost=1 size=7 card=1)
             1          1          1                  INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=14 us cost=0 size=0 card=1)(object id 9847)
             1          1          1                INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=13 us cost=0 size=4 card=1)(object id 9847)
             1          1          1               INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_B_U1 (cr=4 pr=0 pw=0 time=49 us cost=2 size=10 card=1)(object id 12484155)
             1          1          1              INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_TL_U1 (cr=4 pr=0 pw=0 time=96 us cost=2 size=13 card=1)(object id 12484137)
             1          1          1           TABLE ACCESS BY INDEX ROWID HR_ALL_ORGANIZATION_UNITS (cr=3 pr=0 pw=0 time=1246 us cost=1 size=7 card=1)
             1          1          1            INDEX UNIQUE SCAN HR_ORGANIZATION_UNITS_PK (cr=2 pr=0 pw=0 time=24 us cost=0 size=0 card=1)(object id 250158)
             1          1          1          INDEX UNIQUE SCAN HR_ALL_ORGANIZATION_UNTS_TL_PK (cr=2 pr=0 pw=0 time=275 us cost=0 size=7 card=1)(object id 689101)
             1          1          1         TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=38 us cost=1 size=8 card=1)
             1          1          1          INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=15 us cost=0 size=0 card=1)(object id 9847)
             1          1          1        TABLE ACCESS BY INDEX ROWID GL_CODE_COMBINATIONS (cr=4 pr=2 pw=0 time=27531 us cost=2 size=57 card=1)
             1          1          1         INDEX UNIQUE SCAN GL_CODE_COMBINATIONS_U1 (cr=3 pr=1 pw=0 time=19925 us cost=1 size=0 card=1)(object id 51426)
             1          1          1       TABLE ACCESS BY INDEX ROWID MTL_ITEM_LOCATIONS (cr=4 pr=1 pw=0 time=7758 us cost=3 size=24 card=1)
             1          1          1        INDEX RANGE SCAN MTL_ITEM_LOCATIONS_U1 (cr=3 pr=0 pw=0 time=51 us cost=2 size=0 card=1)(object id 9761)
             1          1          1      TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION (cr=3 pr=0 pw=0 time=85 us cost=2 size=28 card=1)
             1          1          1       INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_FK2 (cr=2 pr=0 pw=0 time=29 us cost=1 size=0 card=2)(object id 5379798)
             1          1          1     TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION (cr=3 pr=0 pw=0 time=25 us cost=1 size=25 card=1)
             1          1          1      INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_FK2 (cr=2 pr=0 pw=0 time=11 us cost=1 size=0 card=1)(object id 5379798)
             1          1          1    INDEX FULL SCAN GL_SETS_OF_BOOKS_U2 (cr=1 pr=0 pw=0 time=69 us cost=1 size=4 card=1)(object id 1380842)
             1          1          1   BUFFER SORT (cr=2 pr=0 pw=0 time=110 us cost=55 size=0 card=1)
             1          1          1    TABLE ACCESS FULL FND_PRODUCT_GROUPS (cr=2 pr=0 pw=0 time=59 us cost=3 size=0 card=1)
    Elapsed times include waiting on following events:
      Event waited on                             Times   Max. Wait  Total Waited
      ----------------------------------------   Waited  ----------  ------------
      library cache lock                              2        0.00          0.00
      library cache pin                               2        0.00          0.00
      Disk file operations I/O                      249        0.00          0.00
      db file sequential read                     58819        2.61        714.28
      gc cr grant 2-way                            5198        0.16          4.52
      gc current grant busy                           1        0.00          0.00
      KJC: Wait for msg sends to complete           517        0.00          0.05
      library cache: mutex X                        433        0.01          0.04
      gc cr grant congested                          28        0.08          0.18
      latch: ges resource hash list                   5        0.00          0.00
      gc current block 2-way                        513        0.11          0.61
      gc current block congested                      2        0.00          0.00
      latch: gc element                              16        0.00          0.01
      latch: cache buffers chains                     4        0.00          0.00
      latch: object queue header operation            3        0.00          0.00
    ********************************************************************************

    Explain Plan for the query
    SELECT STATEMENT, GOAL = ALL_ROWS               Cost=56     Cardinality=1     Bytes=219
    MERGE JOIN CARTESIAN               Cost=56     Cardinality=1     Bytes=219
      NESTED LOOPS               Cost=53     Cardinality=1     Bytes=219
       NESTED LOOPS               Cost=52     Cardinality=1     Bytes=215
        NESTED LOOPS               Cost=51     Cardinality=1     Bytes=190
         NESTED LOOPS               Cost=49     Cardinality=1     Bytes=162
          NESTED LOOPS               Cost=46     Cardinality=1     Bytes=138
           NESTED LOOPS               Cost=44     Cardinality=1     Bytes=81
            NESTED LOOPS               Cost=43     Cardinality=1     Bytes=73
             NESTED LOOPS               Cost=43     Cardinality=2     Bytes=132
              VIEW     Object owner=APPS     Object name=CST_INV_DISTRIBUTION_V     Cost=41     Cardinality=2     Bytes=118
               UNION-ALL                         
                NESTED LOOPS OUTER               Cost=20     Cardinality=1     Bytes=291
                 NESTED LOOPS               Cost=18     Cardinality=1     Bytes=255
                  NESTED LOOPS               Cost=18     Cardinality=1     Bytes=251
                   MERGE JOIN CARTESIAN               Cost=14     Cardinality=1     Bytes=192
                    NESTED LOOPS OUTER               Cost=12     Cardinality=1     Bytes=156
                     NESTED LOOPS               Cost=10     Cardinality=1     Bytes=120
                      NESTED LOOPS OUTER               Cost=9     Cardinality=1     Bytes=113
                       NESTED LOOPS               Cost=8     Cardinality=1     Bytes=106
                        NESTED LOOPS               Cost=6     Cardinality=1     Bytes=93
                         NESTED LOOPS               Cost=4     Cardinality=1     Bytes=83
                          NESTED LOOPS               Cost=4     Cardinality=1     Bytes=80
                           TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_MATERIAL_TRANSACTIONS     Cost=4     Cardinality=1     Bytes=76
                            INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_MATERIAL_TRANSACTIONS_U1     Cost=3     Cardinality=1     
                           INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_TRANSACTION_TYPES_U1     Cost=0     Cardinality=191     Bytes=764
                          INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_TXN_SOURCE_TYPES_U1     Cost=0     Cardinality=18     Bytes=54
                         INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_SYSTEM_ITEMS_B_U1     Cost=2     Cardinality=73632445     Bytes=736324450
                        INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_SYSTEM_ITEMS_TL_U1     Cost=2     Cardinality=73652390     Bytes=957481070
                       TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_PARAMETERS     Cost=1     Cardinality=470     Bytes=3290
                        INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_PARAMETERS_U1     Cost=0     Cardinality=1     
                      TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_PARAMETERS     Cost=1     Cardinality=470     Bytes=3290
                       INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_PARAMETERS_U1     Cost=0     Cardinality=1     
                     INDEX RANGE SCAN     Object owner=APPLSYS     Object name=FND_LOOKUP_VALUES_U1     Cost=2     Cardinality=1     Bytes=36
                    BUFFER SORT               Cost=12     Cardinality=1     Bytes=36
                     INDEX RANGE SCAN     Object owner=APPLSYS     Object name=FND_LOOKUP_VALUES_U1     Cost=2     Cardinality=1     Bytes=36
                   TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_TRANSACTION_ACCOUNTS     Cost=4     Cardinality=1     Bytes=59
                    INDEX RANGE SCAN     Object owner=INV     Object name=MTL_TRANSACTION_ACCOUNTS_N1     Cost=3     Cardinality=3     
                  INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_PARAMETERS_U1     Cost=0     Cardinality=1     Bytes=4
                 INDEX RANGE SCAN     Object owner=APPLSYS     Object name=FND_LOOKUP_VALUES_U1     Cost=2     Cardinality=1     Bytes=36
                NESTED LOOPS               Cost=21     Cardinality=1     Bytes=288
                 NESTED LOOPS               Cost=19     Cardinality=1     Bytes=275
                  NESTED LOOPS               Cost=17     Cardinality=1     Bytes=265
                   NESTED LOOPS               Cost=17     Cardinality=1     Bytes=261
                    NESTED LOOPS OUTER               Cost=16     Cardinality=1     Bytes=254
                     NESTED LOOPS               Cost=15     Cardinality=1     Bytes=247
                      NESTED LOOPS               Cost=15     Cardinality=1     Bytes=243
                       NESTED LOOPS OUTER               Cost=15     Cardinality=1     Bytes=240
                        NESTED LOOPS               Cost=13     Cardinality=1     Bytes=204
                         NESTED LOOPS               Cost=9     Cardinality=1     Bytes=131
                          NESTED LOOPS OUTER               Cost=7     Cardinality=1     Bytes=95
                           TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_TRANSACTION_ACCOUNTS     Cost=5     Cardinality=1     Bytes=59
                            INDEX RANGE SCAN     Object owner=INV     Object name=MTL_TRANSACTION_ACCOUNTS_N1     Cost=4     Cardinality=3     
                           INDEX RANGE SCAN     Object owner=APPLSYS     Object name=FND_LOOKUP_VALUES_U1     Cost=2     Cardinality=1     Bytes=36
                          INDEX RANGE SCAN     Object owner=APPLSYS     Object name=FND_LOOKUP_VALUES_U1     Cost=2     Cardinality=1     Bytes=36
                         TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_MATERIAL_TRANSACTIONS     Cost=4     Cardinality=1     Bytes=73
                          INDEX RANGE SCAN     Object owner=INV     Object name=MTL_MATERIAL_TRANSACTIONS_N23     Cost=3     Cardinality=1     
                        INDEX RANGE SCAN     Object owner=APPLSYS     Object name=FND_LOOKUP_VALUES_U1     Cost=2     Cardinality=1     Bytes=36
                       INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_TXN_SOURCE_TYPES_U1     Cost=0     Cardinality=1     Bytes=3
                      INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_TRANSACTION_TYPES_U1     Cost=0     Cardinality=1     Bytes=4
                     TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_PARAMETERS     Cost=1     Cardinality=1     Bytes=7
                      INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_PARAMETERS_U1     Cost=0     Cardinality=1     
                    TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_PARAMETERS     Cost=1     Cardinality=1     Bytes=7
                     INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_PARAMETERS_U1     Cost=0     Cardinality=1     
                   INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_PARAMETERS_U1     Cost=0     Cardinality=1     Bytes=4
                  INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_SYSTEM_ITEMS_B_U1     Cost=2     Cardinality=1     Bytes=10
                 INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_SYSTEM_ITEMS_TL_U1     Cost=2     Cardinality=1     Bytes=13
              TABLE ACCESS BY INDEX ROWID     Object owner=HR     Object name=HR_ALL_ORGANIZATION_UNITS     Cost=1     Cardinality=1     Bytes=7
               INDEX UNIQUE SCAN     Object owner=HR     Object name=HR_ORGANIZATION_UNITS_PK     Cost=0     Cardinality=1     
             INDEX UNIQUE SCAN     Object owner=HR     Object name=HR_ALL_ORGANIZATION_UNTS_TL_PK     Cost=0     Cardinality=1     Bytes=7
            TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_PARAMETERS     Cost=1     Cardinality=1     Bytes=8
             INDEX UNIQUE SCAN     Object owner=INV     Object name=MTL_PARAMETERS_U1     Cost=0     Cardinality=1     
           TABLE ACCESS BY INDEX ROWID     Object owner=GL     Object name=GL_CODE_COMBINATIONS     Cost=2     Cardinality=1     Bytes=57
            INDEX UNIQUE SCAN     Object owner=GL     Object name=GL_CODE_COMBINATIONS_U1     Cost=1     Cardinality=1     
          TABLE ACCESS BY INDEX ROWID     Object owner=INV     Object name=MTL_ITEM_LOCATIONS     Cost=3     Cardinality=1     Bytes=24
           INDEX RANGE SCAN     Object owner=INV     Object name=MTL_ITEM_LOCATIONS_U1     Cost=2     Cardinality=1     
         TABLE ACCESS BY INDEX ROWID     Object owner=HR     Object name=HR_ORGANIZATION_INFORMATION     Cost=2     Cardinality=1     Bytes=28
          INDEX RANGE SCAN     Object owner=HR     Object name=HR_ORGANIZATION_INFORMATIO_FK2     Cost=1     Cardinality=2     
        TABLE ACCESS BY INDEX ROWID     Object owner=HR     Object name=HR_ORGANIZATION_INFORMATION     Cost=1     Cardinality=1     Bytes=25
         INDEX RANGE SCAN     Object owner=HR     Object name=HR_ORGANIZATION_INFORMATIO_FK2     Cost=1     Cardinality=1     
       INDEX FULL SCAN     Object owner=GL     Object name=GL_SETS_OF_BOOKS_U2     Cost=1     Cardinality=1     Bytes=4
      BUFFER SORT               Cost=55     Cardinality=1     
       TABLE ACCESS FULL     Object owner=APPLSYS     Object name=FND_PRODUCT_GROUPS     Cost=3     Cardinality=1     

  • Help needed to tune the Query:Statistics added

    Can someone DBA please help me to tune this query:
    SELECT DISTINCT K.ATTRIBUTE_VALUE AGENCY_ID,B.PROFILE_NM ,NVL(G.OFFICE_DESC,'--') OFFICE_DESC,f.OFFICE_ID,B.PROFILE_ID,'%' ROLE,'%' LAYOUT,
    CASE
    WHEN 'flagB' = '%' THEN
    NVL(J.ISS_GRP_DESC,'BILLING')
    WHEN 'flagO' = '%' THEN
    NVL(J.ISS_GRP_DESC,'ORDERING')
    WHEN 'flag' = '%' THEN
    NVL(J.ISS_GRP_DESC,'BILLING/ORDERING')
    ELSE
    NVL(J.ISS_GRP_DESC,' ')
    END ISS_GRP_DESC,
    DECODE(NVL(H.USERID,' ') ,' ','--','<a sbcuid_in=' || H.USERID || ' target=NEW >'||H.FIRSTNAME || ' ' || H.LASTNAME || '( ' || H.USERID || ' )</a>' ) USER_NAME
    FROM
    PROFILE_PORTAL B ,
    TBL_BDA_AGENCY_RESP_REP C ,
    TBL_BDA_AGENCY_OFFICE F,
    TBL_BDA_OFFICE G,
    USERS_PORTAL H,
    TBL_BDA_USR_ISS_GRP I ,
    TBL_BDA_ISS_GROUP J,
    ATTRIBUTE_VALUES_PORTAL K,
    PROFILE_TYPE_PORTAL L
    WHERE
    B.PROFILE_ID = F.AGENCY_ID (+)
    AND B.PROFILE_ID = C.AGENCY_ID (+)
    AND G.OFFICE_ID (+)= F.OFFICE_ID
    AND H.USERID (+)= C.RESP_USR_ID
    AND C.ISS_GRP_ID = I.ISS_GRP_ID (+)
    AND I.ISS_GRP_ID = J.ISS_GRP_ID(+)
    AND 'PROFILE.'||B.PROFILE_ID = K.ENTITY_ID(+)
    AND K.ATTRIBUTE_VALUE IS NOT NULL
    AND L.PROFILE_TYPE_ID = B.PROFILE_TYPE_ID
    AND L.APPLICATION_CD='BDA'
    AND NOT EXISTS (SELECT agency_id
    FROM TBL_BDA_AGENCY_RESP_REP t
    WHERE t.ISS_GRP_ID IN ('%')
    AND t.AGENCY_ID = C.AGENCY_ID)
    AND K.ATTRIBUTE_VALUE LIKE '%'
    AND UPPER(B.PROFILE_NM) LIKE UPPER('%')
    AND (to_char(NVL(B.PROFILE_ID,0)) LIKE '%' OR NVL(B.PROFILE_ID,0) IN ('a'))
    AND NVL(G.OFFICE_ID,0) IN ('%')
    AND (to_char(NVL(C.RESP_USR_ID,'0')) LIKE '%' OR NVL(C.RESP_USR_ID,'0') IN ('k'))
    ORDER BY PROFILE_NM
    The number of rows in these tables are as follows:
    PROFILE_PORTAL -- 2392
    TBL_BDA_AGENCY_RESP_REP 3508
    TBL_BDA_AGENCY_OFFICE 2151
    TBL_BDA_OFFICE 3
    USERS_PORTAL 270500
    TBL_BDA_USR_ISS_GRP 234
    TBL_BDA_ISS_GROUP 2
    ATTRIBUTE_VALUES_PORTAL 2790
    PROFILE_TYPE_PORTAL 3
    The Explain pal nhas given this o/p to me:
    SQL> select * from table(dbms_xplan.display) dual;
    PLAN_TABLE_OUTPUT
    | Id | Operation | Name | Rows | Bytes |TempSpc| Cost |
    | 0 | SELECT STATEMENT | | 807 | 102K| | 2533 |
    | 1 | SORT UNIQUE | | 807 | 102K| 232K| 82 |
    |* 2 | FILTER | | | | | |
    |* 3 | HASH JOIN OUTER | | 807 | 102K| | 52 |
    |* 4 | HASH JOIN OUTER | | 807 | 95226 | | 40 |
    |* 5 | TABLE ACCESS BY INDEX ROWID | ATTRIBUTE_VALUES | 1 | 23 | | 2 |
    | 6 | NESTED LOOPS | | 7 | 805 | | 37 |
    | 7 | NESTED LOOPS OUTER | | 6 | 552 | | 25 |
    |* 8 | FILTER | | | | | |
    | 9 | NESTED LOOPS OUTER | | | | | |
    |* 10 | FILTER | | | | | |
    | 11 | NESTED LOOPS OUTER | | | | | |
    | 12 | NESTED LOOPS OUTER | | 3 | 141 | | 10 |
    |* 13 | HASH JOIN | | 3 | 120 | | 7 |
    |* 14 | TABLE ACCESS FULL | PROFILE | 6 | 198 | | 4 |
    |* 15 | TABLE ACCESS FULL | PROFILE_TYPE | 1 | 7 | | 2 |
    |* 16 | INDEX RANGE SCAN | SYS_C0019777 | 1 | 7 | | 1 |
    | 17 | TABLE ACCESS BY INDEX ROWID| TBL_BDA_OFFICE | 1 | 10 | | 1 |
    |* 18 | INDEX UNIQUE SCAN | SYS_C0019800 | 1 | | | |
    | 19 | TABLE ACCESS BY INDEX ROWID | TBL_BDA_AGENCY_RESP_REP | 2 | 26 | | 2 |
    |* 20 | INDEX RANGE SCAN | IDX_AGECYRESP_AGNCYID | 2 | | | 1 |
    | 21 | TABLE ACCESS BY INDEX ROWID | USER_ | 1 | 22 | | 1 |
    |* 22 | INDEX UNIQUE SCAN | USER_PK | 1 | | | |
    |* 23 | INDEX RANGE SCAN | IDX_ATTVAL_ENTATTID | 1 | | | 1 |
    | 24 | TABLE ACCESS FULL | TBL_BDA_USR_ISS_GRP | 234 | 702 | | 2 |
    | 25 | TABLE ACCESS FULL | TBL_BDA_ISS_GROUP | 2 | 24 | | 2 |
    |* 26 | TABLE ACCESS BY INDEX ROWID | TBL_BDA_AGENCY_RESP_REP | 1 | 7 | | 3 |
    |* 27 | INDEX RANGE SCAN | IDX_AGECYRESP_AGNCYID | 2 | | | 1 |
    Predicate Information (identified by operation id):
    2 - filter( NOT EXISTS (SELECT /*+ */ 0 FROM "TBL_BDA_AGENCY_RESP_REP" "T" WHERE "T"."AGENCY_ID"=:B1
    AND "T"."ISS_GRP_ID"=TO_NUMBER('%')))
    3 - access("I"."ISS_GRP_ID"="J"."ISS_GRP_ID"(+))
    4 - access("SYS_ALIAS_1"."ISS_GRP_ID"="I"."ISS_GRP_ID"(+))
    5 - filter("K"."ATTRIBUTE_VALUE" IS NOT NULL AND "K"."ATTRIBUTE_VALUE" LIKE '%')
    8 - filter(NVL("SYS_ALIAS_1"."RESP_USR_ID",'0') LIKE '%' OR NVL("SYS_ALIAS_1"."RESP_USR_ID",'0')='k')
    10 - filter(NVL("G"."OFFICE_ID",0)=TO_NUMBER('%'))
    13 - access("L"."PROFILE_TYPE_ID"="B"."PROFILE_TYPE_ID")
    14 - filter(UPPER("B"."PROFILE_NM") LIKE '%' AND (TO_CHAR(NVL("B"."PROFILE_ID",0)) LIKE '%' OR
    NVL("B"."PROFILE_ID",0)=TO_NUMBER('a')))
    15 - filter("L"."APPLICATION_CD"='BDA')
    16 - access("B"."PROFILE_ID"="F"."AGENCY_ID"(+))
    18 - access("G"."OFFICE_ID"(+)="F"."OFFICE_ID")
    20 - access("B"."PROFILE_ID"="SYS_ALIAS_1"."AGENCY_ID"(+))
    22 - access("H"."USERID"(+)="SYS_ALIAS_1"."RESP_USR_ID")
    23 - access("K"."ENTITY_ID"='PROFILE.'||TO_CHAR("B"."PROFILE_ID"))
    26 - filter("T"."ISS_GRP_ID"=TO_NUMBER('%'))
    27 - access("T"."AGENCY_ID"=:B1)
    Note: cpu costing is off
    57 rows selected.
    Elapsed: 00:00:01.08
    Please help me.
    Aashish S.

    Hello Eric,
    Here is the code:
    SELECT DISTINCT
    K.ATTRIBUTE_VALUE AGENCY_ID,
    B.PROFILE_NM ,
    NVL(G.OFFICE_DESC,'--') OFFICE_DESC,
    f.OFFICE_ID,
    B.PROFILE_ID,
    '%' ROLE,
    '%' LAYOUT,
    case
    WHEN 'flagB' = '%' THEN
    NVL(J.ISS_GRP_DESC,'BILLING')
    WHEN 'flagO' = '%' THEN
    NVL(J.ISS_GRP_DESC,'ORDERING')
    WHEN 'flag' = '%' THEN
    NVL(J.ISS_GRP_DESC,'BILLING/ORDERING')
    else
    NVL(J.ISS_GRP_DESC,' ')
    END ISS_GRP_DESC,
    DECODE(NVL(H.USERID,' ') ,' ','--','&lt;a sbcuid_in=' || H.USERID || ' target=NEW &gt;'||H.FIRSTNAME || ' ' || H.LASTNAME ||
    '( ' || H.USERID || ' )&lt;/a&gt;' ) USER_NAME
    from
    PROFILE_PORTAL B ,
    TBL_BDA_AGENCY_RESP_REP C ,
    TBL_BDA_AGENCY_OFFICE F,
    TBL_BDA_OFFICE G,
    USERS_PORTAL H,
    TBL_BDA_USR_ISS_GRP I ,
    TBL_BDA_ISS_GROUP J,
    ATTRIBUTE_VALUES_PORTAL K,
    PROFILE_TYPE_PORTAL L
    WHERE
    B.PROFILE_ID = F.AGENCY_ID (+)
    AND B.PROFILE_ID = C.AGENCY_ID (+)
    AND G.OFFICE_ID (+)= F.OFFICE_ID
    AND H.USERID (+)= C.RESP_USR_ID
    AND C.ISS_GRP_ID = I.ISS_GRP_ID (+)
    AND I.ISS_GRP_ID = J.ISS_GRP_ID(+)
    AND 'PROFILE.'||B.PROFILE_ID = K.ENTITY_ID(+)
    AND K.ATTRIBUTE_VALUE IS NOT NULL
    AND L.PROFILE_TYPE_ID = B.PROFILE_TYPE_ID
    AND L.APPLICATION_CD='BDA'
    AND NOT EXISTS
    (SELECT agency_id
    FROM TBL_BDA_AGENCY_RESP_REP t
    WHERE t.ISS_GRP_ID IN (1)
    AND t.AGENCY_ID = C.AGENCY_ID)
    AND K.ATTRIBUTE_VALUE LIKE '%'
    AND UPPER(B.PROFILE_NM) LIKE UPPER('%')
    AND (to_char(NVL(B.PROFILE_ID,0))
    LIKE '%'
    OR NVL(B.PROFILE_ID,0) IN (1))
    AND NVL(G.OFFICE_ID,0) IN (1)
    AND (to_char(NVL(C.RESP_USR_ID,'0'))
    LIKE '%'
    OR NVL(C.RESP_USR_ID,'0') IN ('%'))
    ORDER BY PROFILE_NM
    This is the Query and the query takes some mins. to run in prod environment.
    From the Query plan ,I am not able to get any idea for optimization.
    Now,Can you tell me which steps I need to follow to run it faster and which all modifications should be made?
    Thanks.
    Aashish S.

  • Approach to tune a query in short time

    Hi All,
    Oracle 10g I know this question is asked number of times and there are many good replies to them.
    But I just want to know how to approach a completely new query ( like the task given to me to fine tume a query in 1 day when I dont have even the slightest idea about how to proceed) if the timeline is very stringent and by just looking at the explain plan, you have to take the decision.
    I am just posting my query here and what I am looking for is some lead on how to identify the congetion point which is where this query takes long time ( in my case some 15 mins as reported to me)
    select
                     "LEGAL ENTITY",
                     "Legal Entity Description",
                     "Cluster",
                     "Sub_Cluster",
                     "Account",
                      rownum,
                     "Moody_Rating",
                     "Process_Date",
                     "Merge_Description",
                      rownum,
                     "Merge_Description",
                     "is_id_ic",
                     "is_n",
                     "cusip",
                     "isin",
                     "credit_spread_PV01",
                     "amount",
                     "Market_Value",
                     "Currency",
                     "Sensitivity_Type",
                     "maturity_Date",
                     "Exception_Flag",
                     "Base_Security_Id",
                     DECODE(sign("Market_Value"),-1,DeCode(SigN("Recovery"),-1,"Recovery",('-'||"Recovery")), ABS("Recovery")) as "Recovery"
                     from
                     select
                     le.name "LEGAL ENTITY",
                     le.display_name "Legal Entity Description",
                     mn4.display_name "Cluster",
                     mn3.display_name "Sub_Cluster",
                     bookname.display_name "Account",
                     (SELECT RATING_NAME
                        FROM moody_rating
                       where moody_rating_id = i.moody_rating_id) "Moody_Rating",
                     to_char(to_date(:v_cob_date,'DD-MM-YY'),'YYYYMMDD') "Process_Date",
                     ss.issuer "Merge_Description",
                     PART.MARS_ISSUER "is_id_ic",
                     PART.PARTICIPANT_NAME "is_n",
                     NULL "cusip",
                     NULL "isin",
                     NULL "credit_spread_PV01",
                     NULL "amount",
                     sum(mtmsens.sensitivity_value) "Market_Value",
                     (SELECT distinct cc.CCY
                        FROM legacy_country CC
                       INNER JOIN MARSNODE MN ON CC.countryisocode = MN.NAME
                                             and mn.close_date is null
                       INNER JOIN MARSNODETYPE MNT ON MN.TYPE_ID =
                                                      MNT.NODE_TYPE_ID
                                                  AND MNT.NAME = 'COUNTRY'
                                                  and mnt.close_date is null
                       where MN.NODE_ID = part.country_domicile_id
                         and cc.begin_cob_date <= :v_cob_date
                         and cc.end_cob_date > :v_cob_date
                         and rownum < 2) "Currency",
                     'CREDITSPREADMARKETVALUE' "Sensitivity_Type",
                     NULL "maturity_Date",
                     NULL "Exception_Flag",
                     NULL "Base_Security_Id",
                     sum(ss.sensitivity_value) "Recovery"
                     from staging_position sp
                left JOIN position p on (
                                         p.feed_instance_id = sp.feed_instance_id
                                     AND p.feed_row_id = sp.feed_row_id)
                left JOIN staging_instrument si on (si.feed_instance_id =
                                                   sp.feed_instance_id AND
                                                   si.position_key =
                                                   sp.position_key)
                left join book b on (b.book_id = p.book_id and
                                    b.begin_cob_date <= :v_cob_date and
                                    b.end_cob_date > :v_cob_date)
                left join marsnode bk on (b.book_id = bk.node_id and
                                         bk.close_date is null)
                left join marsnode le on (b.leg_ent_id = le.node_id and
                                         le.close_date is null)
                left join marsnode bookname on (bookname.node_id = p.book_id and
                                               bookname.close_date is null)
                left join marsnodelink mnl on p.book_id = mnl.node_id
                                          and :v_bus_org_hier_id =
                                              mnl.hierarchy_id
                                          and mnl.close_date is null
                                          and :v_cob_date >= mnl.begin_cob_date
                                          and :v_cob_date < mnl.end_cob_date
                left join marsnode mn on mn.node_id = mnl.parent_id
                                     and mn.close_date is null
                left join marsnodelink mnl2 on mn.node_id = mnl2.node_id
                                           and :v_bus_org_hier_id =
                                               mnl2.hierarchy_id
                                           and mnl2.close_date is null
                                           and :v_cob_date >= mnl2.begin_cob_date
                                           and :v_cob_date < mnl2.end_cob_date
                left join marsnode mn2 on mn2.node_id = mnl2.parent_id
                                      and mn2.close_date is null
                left join marsnodelink mnl3 on mn2.node_id = mnl3.node_id
                                           and :v_bus_org_hier_id =
                                               mnl3.hierarchy_id
                                           and mnl3.close_date is null
                                           and :v_cob_date >= mnl3.begin_cob_date
                                           and :v_cob_date < mnl3.end_cob_date
                left join marsnode mn3 on mn3.node_id = mnl3.parent_id
                                      and mn3.close_date is null
                left join marsnodelink mnl4 on mn3.node_id = mnl4.node_id
                                           and :v_bus_org_hier_id =
                                               mnl4.hierarchy_id
                                           and mnl4.close_date is null
                                           and :v_cob_date >= mnl4.begin_cob_date
                                           and :v_cob_date < mnl4.end_cob_date
                left join marsnode mn4 on mn4.node_id = mnl4.parent_id
                                      and mn4.close_date is null
              --sensitivity data
                left JOIN STAGING_SENSITIVITY ss ON (ss.FEED_INSTANCE_ID =
                                                    sp.FEED_INSTANCE_ID AND
                                                    ss.FEED_ROW_ID =
                                                    sp.FEED_ROW_ID)
              --sensitivity data
                left JOIN STAGING_SENSITIVITY mtmsens ON (mtmsens.FEED_INSTANCE_ID =
                                                         sp.FEED_INSTANCE_ID AND
                                                         mtmsens.FEED_ROW_ID =
                                                         sp.FEED_ROW_ID)
                LEFT join xref_domain_value_map XREF on (XREF.Src_Value =
                                                        ss.issuer and
                                                        XREF.close_action_id is null and
                                                        XREF.Begin_Cob_Date <=
                                                        :v_cob_date and
                                                        XREF.End_Cob_Date >
                                                        :v_cob_date AND
                                                        xref.domain_map_id = 601 AND
                                                        xref.source_system_id = 307 AND xref.ISSUE_ID is not null)
                Left join ISSUE i on (i.issue_id = xref.issue_id)
                LEFT join participant PART ON (PART.PARTICIPANT_ID =
                                              XREF.TGT_VALUE and
                                              PART.Close_Action_Id is null and
                                              PART.Begin_Cob_Date <= :v_cob_date and
                                              PART.End_Cob_Date > :v_cob_date)
                left join moody_rating RATING on (rating.moody_rating_id =
                                                  i.MOODY_RATING_ID)
               where sp.feed_instance_id in
                     (select fbi.feed_instance_id
                      from   feed_book_status fbi ,
                             feed_instance fi
                      where  fbi.cob_date = :v_cob_date
                      and    fbi.feed_instance_id = fi.feed_instance_id
                      and    fi.feed_id in (
                                           select feed_id from feed_group_xref where feed_group_id in (
                                               select feed_group_id from feed_group where description like 'CDO Feeds')
                                               and close_action_id is null
                 and sp.Feed_Row_Status_Id = 1
                 and ss.sensitivity_type = 'CREDITSPREADDEFAULT'
                 and mtmsens.sensitivity_type = 'MTMVALUE'
                 and le.name='161'
                 group by le.name,
                        le.display_name,
                        mn3.display_name,
                        mn4.display_name,
                        mn.display_name,
                        i.moody_rating_id,
                        ss.issuer,
                        PART.MARS_ISSUER,
                        PART.PARTICIPANT_NAME,
                        sp.feed_instance_id,
                        part.country_domicile_id,
                        bookname.display_name) And the explain plan
    SELECT STATEMENT, GOAL = CHOOSE               Cost=19365     Cardinality=1     Bytes=731
    TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MOODY_RATING     Cost=1     Cardinality=1     Bytes=9
      INDEX UNIQUE SCAN     Object owner=MARS     Object name=PK_MOODY_RATING     Cost=0     Cardinality=1     
    HASH UNIQUE               Cost=77     Cardinality=1     Bytes=488
      COUNT STOPKEY                         
       HASH JOIN               Cost=76     Cardinality=1     Bytes=488
        NESTED LOOPS               Cost=68     Cardinality=1     Bytes=460
         HASH JOIN               Cost=66     Cardinality=1     Bytes=450
          HASH JOIN               Cost=59     Cardinality=1     Bytes=412
           NESTED LOOPS               Cost=51     Cardinality=1     Bytes=402
            HASH JOIN               Cost=49     Cardinality=1     Bytes=392
             NESTED LOOPS               Cost=42     Cardinality=1     Bytes=359
              NESTED LOOPS               Cost=40     Cardinality=1     Bytes=349
               NESTED LOOPS               Cost=37     Cardinality=1     Bytes=300
                NESTED LOOPS               Cost=34     Cardinality=1     Bytes=251
                 HASH JOIN               Cost=32     Cardinality=1     Bytes=241
                  TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=27
                   NESTED LOOPS               Cost=24     Cardinality=1     Bytes=231
                    NESTED LOOPS               Cost=21     Cardinality=1     Bytes=204
                     NESTED LOOPS               Cost=18     Cardinality=1     Bytes=171
                      NESTED LOOPS               Cost=16     Cardinality=1     Bytes=136
                       NESTED LOOPS               Cost=13     Cardinality=1     Bytes=86
                        NESTED LOOPS               Cost=10     Cardinality=1     Bytes=37
                         VIEW     Object owner=MARS          Cost=7     Cardinality=1     Bytes=10
                          FILTER                         
                           CONNECT BY WITH FILTERING                         
                            TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK               
                             INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_PARENT_ID     Cost=3     Cardinality=250     Bytes=2500
                              HASH JOIN               Cost=5     Cardinality=1     Bytes=62
                               TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
                               TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHYROOT     Cost=2     Cardinality=5     Bytes=175
                            NESTED LOOPS                         
                             CONNECT BY PUMP                         
                             TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=7     Cardinality=1     Bytes=39
                              INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_MNL_HI_PI_NI     Cost=3     Cardinality=4     
                           TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
                         TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=27
                          INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
                        TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=49
                         INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
                       TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=50
                        INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
                      TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODETYPE     Cost=2     Cardinality=1     Bytes=35
                       INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODETYPE     Cost=1     Cardinality=1     
                     TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=NODE_ASSOC     Cost=3     Cardinality=1     Bytes=33
                      INDEX RANGE SCAN     Object owner=MARS     Object name=PK_NODE_ASSOC     Cost=1     Cardinality=3     
                    INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
                  VIEW     Object owner=MARS          Cost=7     Cardinality=1     Bytes=10
                   FILTER                         
                    CONNECT BY WITH FILTERING                         
                     TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK               
                      INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_PARENT_ID     Cost=3     Cardinality=250     Bytes=2500
                       HASH JOIN               Cost=5     Cardinality=1     Bytes=62
                        TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
                        TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHYROOT     Cost=2     Cardinality=5     Bytes=175
                     NESTED LOOPS                         
                      CONNECT BY PUMP                         
                      TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=7     Cardinality=1     Bytes=39
                       INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_MNL_HI_PI_NI     Cost=3     Cardinality=4     
                    TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
                 INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     Bytes=10
                TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=NODE_ASSOC     Cost=3     Cardinality=1     Bytes=49
                 INDEX RANGE SCAN     Object owner=MARS     Object name=PK_NODE_ASSOC     Cost=1     Cardinality=3     
               TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=49
                INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
              INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     Bytes=10
             VIEW     Object owner=MARS          Cost=7     Cardinality=1     Bytes=33
              FILTER                         
               CONNECT BY WITH FILTERING                         
                TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK               
                 INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_PARENT_ID     Cost=3     Cardinality=250     Bytes=2500
                  HASH JOIN               Cost=5     Cardinality=1     Bytes=62
                   TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
                   TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHYROOT     Cost=2     Cardinality=5     Bytes=175
                NESTED LOOPS                         
                 CONNECT BY PUMP                         
                 TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=7     Cardinality=1     Bytes=39
                  INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_MNL_HI_PI_NI     Cost=3     Cardinality=4     
               TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
            INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     Bytes=10
           VIEW     Object owner=MARS          Cost=7     Cardinality=1     Bytes=10
            FILTER                         
             CONNECT BY WITH FILTERING                         
              TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK               
               INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_PARENT_ID     Cost=3     Cardinality=250     Bytes=2500
                HASH JOIN               Cost=5     Cardinality=1     Bytes=62
                 TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
                 TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHYROOT     Cost=2     Cardinality=5     Bytes=175
              NESTED LOOPS                         
               CONNECT BY PUMP                         
               TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=7     Cardinality=1     Bytes=39
                INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_MNL_HI_PI_NI     Cost=3     Cardinality=4     
             TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
          VIEW     Object owner=MARS          Cost=7     Cardinality=1     Bytes=38
           FILTER                         
            CONNECT BY WITH FILTERING                         
             TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK               
              INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_PARENT_ID     Cost=3     Cardinality=250     Bytes=2500
               HASH JOIN               Cost=5     Cardinality=1     Bytes=62
                TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
                TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHYROOT     Cost=2     Cardinality=5     Bytes=175
             NESTED LOOPS                         
              CONNECT BY PUMP                         
              TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=7     Cardinality=1     Bytes=57
               INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_MNL_HI_PI_NI     Cost=3     Cardinality=4     
            TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=36
         INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     Bytes=10
        VIEW     Object owner=MARS          Cost=7     Cardinality=1     Bytes=28
         FILTER                         
          CONNECT BY WITH FILTERING                         
           TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK               
            INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_PARENT_ID     Cost=3     Cardinality=250     Bytes=2500
             HASH JOIN               Cost=5     Cardinality=1     Bytes=62
              TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
              TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHYROOT     Cost=2     Cardinality=5     Bytes=175
           NESTED LOOPS                         
            CONNECT BY PUMP                         
            TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=7     Cardinality=1     Bytes=57
             INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_MNL_HI_PI_NI     Cost=3     Cardinality=4     
          TABLE ACCESS FULL     Object owner=MARS     Object name=MARSHIERARCHY     Cost=2     Cardinality=1     Bytes=27
    COUNT                         
      VIEW     Object owner=MARS          Cost=19365     Cardinality=1     Bytes=731
       HASH GROUP BY               Cost=19365     Cardinality=1     Bytes=1112
        NESTED LOOPS OUTER               Cost=19364     Cardinality=1     Bytes=1112
         NESTED LOOPS OUTER               Cost=19361     Cardinality=1     Bytes=1040
          NESTED LOOPS OUTER               Cost=19361     Cardinality=1     Bytes=1037
           NESTED LOOPS OUTER               Cost=19360     Cardinality=1     Bytes=1019
            NESTED LOOPS OUTER               Cost=19357     Cardinality=1     Bytes=951
             NESTED LOOPS OUTER               Cost=19354     Cardinality=1     Bytes=914
              NESTED LOOPS OUTER               Cost=19351     Cardinality=1     Bytes=877
               NESTED LOOPS OUTER               Cost=19337     Cardinality=1     Bytes=820
                NESTED LOOPS OUTER               Cost=19334     Cardinality=1     Bytes=783
                 NESTED LOOPS OUTER               Cost=19320     Cardinality=1     Bytes=726
                  NESTED LOOPS OUTER               Cost=19317     Cardinality=1     Bytes=707
                   NESTED LOOPS OUTER               Cost=19303     Cardinality=1     Bytes=650
                    NESTED LOOPS OUTER               Cost=19300     Cardinality=1     Bytes=613
                     NESTED LOOPS               Cost=19285     Cardinality=1     Bytes=556
                      NESTED LOOPS               Cost=19280     Cardinality=1     Bytes=443
                       NESTED LOOPS OUTER               Cost=19275     Cardinality=1     Bytes=330
                        HASH JOIN RIGHT SEMI               Cost=17457     Cardinality=1     Bytes=248
                         VIEW     Object owner=SYS     Object name=VW_NSO_1     Cost=1119     Cardinality=30     Bytes=150
                          HASH JOIN               Cost=1119     Cardinality=30     Bytes=2040
                           TABLE ACCESS FULL     Object owner=MARS     Object name=FEED_GROUP     Cost=2     Cardinality=5     Bytes=120
                           HASH JOIN               Cost=1116     Cardinality=1607     Bytes=70708
                            TABLE ACCESS FULL     Object owner=MARS     Object name=FEED_GROUP_XREF     Cost=13     Cardinality=701     Bytes=14721
                            HASH JOIN               Cost=1102     Cardinality=3602     Bytes=82846
                             INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_FBS_CD_FII_BI     Cost=22     Cardinality=3602     Bytes=46826
                             TABLE ACCESS FULL     Object owner=MARS     Object name=FEED_INSTANCE     Cost=1024     Cardinality=670264     Bytes=6702640
                         NESTED LOOPS               Cost=16337     Cardinality=324     Bytes=78732
                          HASH JOIN               Cost=14324     Cardinality=1977     Bytes=302481
                           NESTED LOOPS OUTER               Cost=11     Cardinality=1     Bytes=114
                            NESTED LOOPS               Cost=8     Cardinality=1     Bytes=95
                             TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=5     Cardinality=1     Bytes=59
                              INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_NODE1     Cost=3     Cardinality=2     
                             TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=BOOK     Cost=3     Cardinality=2     Bytes=72
                              INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_BOOK_LEI_BCD     Cost=2     Cardinality=4     
                            TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=19
                             INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
                           PARTITION RANGE ALL               Cost=13995     Cardinality=3854299     Bytes=150317661
                            TABLE ACCESS FULL     Object owner=MARS     Object name=POSITION     Cost=13995     Cardinality=3854299     Bytes=150317661
                          PARTITION RANGE ITERATOR               Cost=2     Cardinality=1     Bytes=90
                           PARTITION HASH ITERATOR               Cost=2     Cardinality=1     Bytes=90
                            TABLE ACCESS BY LOCAL INDEX ROWID     Object owner=MARS     Object name=STAGING_POSITION     Cost=2     Cardinality=1     Bytes=90
                             INDEX UNIQUE SCAN     Object owner=MARS     Object name=PK_STAGINGPOSITON     Cost=1     Cardinality=1     
                        PARTITION HASH ITERATOR               Cost=1819     Cardinality=1     Bytes=82
                         TABLE ACCESS BY LOCAL INDEX ROWID     Object owner=MARS     Object name=STAGING_INSTRUMENT     Cost=1819     Cardinality=1     Bytes=82
                          INDEX RANGE SCAN     Object owner=MARS     Object name=PK_STAGINGINSTRUMENT     Cost=9     Cardinality=2551     
                       PARTITION RANGE ITERATOR               Cost=5     Cardinality=1     Bytes=113
                        PARTITION HASH ITERATOR               Cost=5     Cardinality=1     Bytes=113
                         TABLE ACCESS BY LOCAL INDEX ROWID     Object owner=MARS     Object name=STAGING_SENSITIVITY     Cost=5     Cardinality=1     Bytes=113
                          INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_SENSITIVITY_FEED_ROW_ID     Cost=3     Cardinality=8     
                      PARTITION RANGE ITERATOR               Cost=5     Cardinality=1     Bytes=113
                       PARTITION HASH ITERATOR               Cost=5     Cardinality=1     Bytes=113
                        TABLE ACCESS BY LOCAL INDEX ROWID     Object owner=MARS     Object name=STAGING_SENSITIVITY     Cost=5     Cardinality=1     Bytes=113
                         INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_SENSITIVITY_FEED_ROW_ID     Cost=3     Cardinality=8     
                     TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=14     Cardinality=1     Bytes=57
                      INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_NODE_ID     Cost=2     Cardinality=14     
                    TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=37
                     INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
                   TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=14     Cardinality=1     Bytes=57
                    INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_NODE_ID     Cost=2     Cardinality=14     
                  TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=19
                   INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
                 TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=14     Cardinality=1     Bytes=57
                  INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_NODE_ID     Cost=2     Cardinality=14     
                TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=37
                 INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
               TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODELINK     Cost=14     Cardinality=1     Bytes=57
                INDEX RANGE SCAN     Object owner=MARS     Object name=FKI_15632_NODE_ID     Cost=2     Cardinality=14     
              TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=37
               INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
             TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=MARSNODE     Cost=3     Cardinality=1     Bytes=37
              INDEX RANGE SCAN     Object owner=MARS     Object name=PK_MARSNODE     Cost=2     Cardinality=1     
            TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=XREF_DOMAIN_VALUE_MAP     Cost=3     Cardinality=1     Bytes=68
             INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_XDVM_DMI_SV_BCD     Cost=2     Cardinality=1     
           TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=ISSUE     Cost=1     Cardinality=1     Bytes=18
            INDEX UNIQUE SCAN     Object owner=MARS     Object name=PK_ISSUE     Cost=0     Cardinality=1     
          INDEX UNIQUE SCAN     Object owner=MARS     Object name=PK_MOODY_RATING     Cost=0     Cardinality=1     Bytes=3
         TABLE ACCESS BY INDEX ROWID     Object owner=MARS     Object name=PARTICIPANT     Cost=3     Cardinality=1     Bytes=72
          INDEX RANGE SCAN     Object owner=MARS     Object name=PK_PARTICIPANT     Cost=2     Cardinality=1     

    Hi,
    in your explain plan:
    HASH JOIN RIGHT SEMI               Cost=17457     Cardinality=1     Bytes=248
    VIEW     Object owner=SYS     Object name=VW_NSO_1     Cost=1119     Cardinality=30     Bytes=150
    HASH JOIN               Cost=1119     Cardinality=30     Bytes=2040
    TABLE ACCESS FULL     Object owner=MARS     Object name=FEED_GROUP     Cost=2     Cardinality=5     Bytes=120
    HASH JOIN               Cost=1116     Cardinality=1607     Bytes=70708
    TABLE ACCESS FULL     Object owner=MARS     Object name=FEED_GROUP_XREF     Cost=13     Cardinality=701     Bytes=14721
    HASH JOIN               Cost=1102     Cardinality=3602     Bytes=82846
    INDEX RANGE SCAN     Object owner=MARS     Object name=IDX_FBS_CD_FII_BI     Cost=22     Cardinality=3602     Bytes=46826
    TABLE ACCESS FULL     Object owner=MARS     Object name=FEED_INSTANCEThis part has the highest costs (this doesn't always mean it is slow). So this leads me to the WHERE clause where feed_group, feed_group_xref and feed_instance full are used. Maybe this can be improved, although the cardinality is not that high, so a full table can be the best. So the question is can indexes help here?
    Furthermore there is the full table scan on POSITION:
    TABLE ACCESS FULL     Object owner=MARS     Object name=POSITION     Cost=13995     Cardinality=3854299     Bytes=150317661This looks also a large tabel (3 million + records), so is it possible to get this part smaller?
    Herald ten Dam
    http://htendam.wordpress.com

  • Is there any way to tune this query? EXPLAIN PLAN included

    DB version:10gR2
    The below query was taking more than 3 seconds. The statistics are up to date for these tables. Is there any other way i could tune this query?
    SELECT COUNT(1)
    FROM
    INVN_SCOPE_DTL, ship_dtl WHERE ship_dtl.WHSE = INVN_SCOPE_DTL.WHSE (+)
    AND 'QC' = INVN_SCOPE_DTL.FROM_WORK_GRP (+)
    AND  'MQN' = INVN_SCOPE_DTL.FROM_WORK_AREA (+)
    AND  ship_dtl.START_CURR_WORK_GRP = INVN_SCOPE_DTL.TO_WORK_GRP (+)
    AND  ship_dtl.START_CURR_WORK_AREA = INVN_SCOPE_DTL.TO_WORK_AREA (+)
    AND  ship_dtl.WHSE = '930' AND  ship_dtl.OWNER_USER_ID = 'CTZDM'
    OR ship_dtl.OWNER_USER_ID = '*'
    AND ship_dtl.STAT_CODE >= '10'
    AND ship_dtl.STAT_CODE <= '20'
    ORDER BY ship_dtl.OWNER_USER_ID DESC,
    ship_dtl.CURR_TASK_PRTY ASC, INVN_SCOPE_DTL.DISTANCE ASC, ship_dtl.RLS_DATE_TIME ASC, ship_dtl.TASK_ID ASC;
    SQL> select * from table(dbms_xplan.display);
    PLAN_TABLE_OUTPUT
    | Id  | Operation                      |  Name               | Rows  | Bytes | Cost (%CPU)|
    |   0 | SELECT STATEMENT               |                     |     1 |    86 |    86   (2)|
    |   1 |  SORT AGGREGATE                |                     |     1 |    86 |            |
    |   2 |   NESTED LOOPS OUTER           |                     |   898 | 77228 |    86   (2)|
    |   3 |    INLIST ITERATOR             |                     |       |       |            |
    |*  4 |     TABLE ACCESS BY INDEX ROWID| ship_dtl            |   898 | 31430 |    85   (2)|
    |*  5 |      INDEX RANGE SCAN          | ship_dtl_IND_4      |  2876 |       |     1   (0)|
    |   6 |    TABLE ACCESS BY INDEX ROWID | INVN_SCOPE_DTL     |     1 |    51 |     2  (50)|
    PLAN_TABLE_OUTPUT
    |*  7 |     INDEX UNIQUE SCAN          | PK_INVN_SCOPE_DTL  |     1 |       |            |
    Predicate Information (identified by operation id):
       4 - filter("ship_dtl"."WHSE"='930' AND "ship_dtl"."STAT_CODE">=10 AND
                  "ship_dtl"."STAT_CODE"<=20)
       5 - access("ship_dtl"."OWNER_USER_ID"='*' OR "ship_dtl"."OWNER_USER_ID"='CTZDM')
       7 - access("INVN_SCOPE_DTL"."WHSE"(+)='930' AND
                  "INVN_SCOPE_DTL"."FROM_WORK_GRP"(+)='QC' AND "INVN_SCOPE_DTL"."FROM_WORK_AREA"(+)='MQN'
    PLAN_TABLE_OUTPUT
                  AND "ship_dtl"."START_CURR_WORK_GRP"="INVN_SCOPE_DTL"."TO_WORK_GRP"(+) AND
                  "ship_dtl"."START_CURR_WORK_AREA"="INVN_SCOPE_DTL"."TO_WORK_AREA"(+))
           filter("ship_dtl"."WHSE"="INVN_SCOPE_DTL"."WHSE"(+))
    25 rows selected.

    William Robertson wrote:
    I notice an OR predicate in the middle of some AND predicates without explicit bracketing. Are you sure it does what you think it does?I underline this point.
    A conjuction (AND expression) has a higher priority and will be executed (logically) before the disjunction (OR expression)! So your select looks like this
    SELECT COUNT(1)
    FROM INVN_SCOPE_DTL, ship_dtl
    WHERE
          ( ship_dtl.WHSE = INVN_SCOPE_DTL.WHSE (+)
          AND 'QC' = INVN_SCOPE_DTL.FROM_WORK_GRP (+)
          AND  'MQN' = INVN_SCOPE_DTL.FROM_WORK_AREA (+)
          AND  ship_dtl.START_CURR_WORK_GRP = INVN_SCOPE_DTL.TO_WORK_GRP (+)
          AND  ship_dtl.START_CURR_WORK_AREA = INVN_SCOPE_DTL.TO_WORK_AREA (+)
          AND  ship_dtl.WHSE = '930'
          AND  ship_dtl.OWNER_USER_ID = 'CTZDM'
    OR   ( ship_dtl.OWNER_USER_ID = '*'
          AND ship_dtl.STAT_CODE >= '10'
          AND ship_dtl.STAT_CODE <= '20'
    ;This might be want you want, but I doubt it very much. Please add parenthesis', to get it working the way it should be.
    Edited by: Sven W. on Oct 16, 2008 3:25 PM

Maybe you are looking for

  • Debtors Outstanding Balance

    Hi Experts, I need a report for Debtors Outstanding Balance(Unreconcilled Transactions)Bill Wise. It can be achieved by Business Partners>BP MasterData>AccountBalance -->Internal Reconcilliation. But everytime we have to go for each customer master d

  • ConnCacheBean Setting for a Load Balance  URL

    Hi, We are using the ConnCacheBean to set the URL property. We have a new load-balance database, how can I pass that on as a paramter? Thanks. <jsp:setProperty name="tdbean" property="URL" value= "jdbc:oracle:thin:@----" /> Thanks.

  • BOE 5 TIER landscape

    Hi guys I need some expert opinions. We have 5 Tiers landscape currently in BW and ECC (2dev, 2QA, and 1 prod) dev2, and qa2 are used for system upgrades and applying patches. our plan is to use BusinessObjects 4 as a reporting platform for BW and EC

  • How to Load Catalog with given catalog id

    How to load Catalog with given catalog id in ATG can any one help on this? Thanks in advance.

  • Alter disjointed rollover code to accomodate database driven images

    The effect I would like to achieve is that by clicking on a repeat region thumbnail image (first code block) the larger version of the same selected image is viewed concurrently in a different portion of the page(second code block) THUMBNAIL IMAGE CO