Optimize a query

i have query which is taking too much time(54 min) .the main reason of getting slow is that table is too huge.
INSERT INTO Table1 (Col1,Col2,Col3,Col4,Col5,Col6)
(SELECT DISTINCT "Col1","Col2","Col3","Col4","Col5","Col6"
FROM Table2
WHERE "Col6">0 AND "Col1"<9999 AND "paraDate">
     (SELECT collDate FROM Table3 WHERE "Col1"=Col1))
UNION
(SELECT DISTINCT "Col1","Col2","Col3","Col4","Col5","Col6"
FROM Table10
WHERE "Col6">0 AND "Col1"<9999 AND "paraDate">
     (SELECT colDate FROM Table3 WHERE "Col1"=Col1))
UNION
(SELECT "Col1","Col2","Col3","Col4","Col5","Col6"
FROM Table4
WHERE "Col6">0 AND "Col1"<9999
MINUS
SELECT Col1,Col2,Col3,Col4,Col5,Col6
FROM Table5)
UNION
(SELECT "Col1","Col2","Col3","Col4","Col5","Col6"
FROM Table6
WHERE "Col6">0 AND "Col1"<9999
MINUS
SELECT Col1,Col2,Col3,Col4,Col5,Col6
FROM Table7)
UNION
(SELECT a."Col1",a."Col2",a."Col3",a."Col4",a."Col5",a."Col6"
FROM Table8 a, Table9 b
WHERE a."Col6">0 AND a."Col1"<9999
     AND a."Col1"=b.Col1
     AND a."Col2"=b.Col2
     AND a."Col3"=b.Col3
     AND a."Col4"=b.Col4
     AND a."Col5"=b.Col5
     AND a."Col6"=b.Col6)
i want to optimize it.

Hi,
Firstly, I would say/ask, can you use "UNION ALL" instead of "UNION". Basically you are taking union of 5-6 queries which will try to take only unique values. It is a costly operation. If you do not expect to get same values of col1, col2.....col6 from Table2,10,4,5,6,7,8,9, then use UNION ALL, it will save some good time. In short, understand the difference between UNION and UNION ALL and apply it here, if possible.
I guess, you have changed the original/actual table and column names before posting the query on the forum for anonymity, which is fair enough. But as we have no idea about the indexes on various tables, it is very difficult to comment.
Regards

Similar Messages

  • Help needed to optimize the query

    Help needed to optimize the query:
    The requirement is to select the record with max eff_date from HIST_TBL and that max eff_date should be > = '01-Jan-2007'.
    This is having high cost and taking around 15mins to execute.
    Can anyone help to fine-tune this??
       SELECT c.H_SEC,
                    c.S_PAID,
                    c.H_PAID,
                    table_c.EFF_DATE
       FROM    MTCH_TBL c
                    LEFT OUTER JOIN
                       (SELECT b.SEC_ALIAS,
                               b.EFF_DATE,
                               b.INSTANCE
                          FROM HIST_TBL b
                         WHERE b.EFF_DATE =
                                  (SELECT MAX (b2.EFF_DATE)
                                     FROM HIST_TBL b2
                                    WHERE b.SEC_ALIAS = b2.SEC_ALIAS
                                          AND b.INSTANCE =
                                                 b2.INSTANCE
                                          AND b2.EFF_DATE >= '01-Jan-2007')
                               OR b.EFF_DATE IS NULL) table_c
                    ON  table_c.SEC_ALIAS=c.H_SEC
                       AND table_c.INSTANCE = 100;

    To start with, I would avoid scanning HIST_TBL twice.
    Try this
    select c.h_sec
         , c.s_paid
         , c.h_paid
         , table_c.eff_date
      from mtch_tbl c
      left
      join (
              select sec_alias
                   , eff_date
                   , instance
                from (
                        select sec_alias
                             , eff_date
                             , instance
                             , max(eff_date) over(partition by sec_alias, instance) max_eff_date
                          from hist_tbl b
                         where eff_date >= to_date('01-jan-2007', 'dd-mon-yyyy')
                            or eff_date is null
               where eff_date = max_eff_date
                  or eff_date is null
           ) table_c
        on table_c.sec_alias = c.h_sec
       and table_c.instance  = 100;

  • Need help on optimization of query

    Basically I had some query which should have been optimized. I did some optimization, but I guess it could be optimized more. Please help
    DATA_
    PK - ID
    FK - ID (HIER ID)
    VAL nullable
    ATTR1 not null
    ATTR2 not null
    HIER
    PK -ID
    L1 - not null
    L2 - not null
    L3 - not null
    WITH data_ AS
    SELECT 1 ID, 20 val, 1 attr1, 1 attr2
    FROM DUAL
    UNION ALL
    SELECT 2, 30, 0, 1
    FROM DUAL
    UNION ALL
    SELECT 3, 40, 1, 1
    FROM DUAL
    UNION ALL
    SELECT 4, 50, 0, 0
    FROM DUAL
    UNION ALL
    SELECT 5, 60, 1, 0
    FROM DUAL
    UNION ALL
    SELECT 6, 70, 0, 1
    FROM DUAL
    UNION ALL
    SELECT 7, 80, 1, 1
    FROM DUAL
    UNION ALL
    SELECT 8, 10, 1, 0
    FROM DUAL
    UNION ALL
    SELECT 9, 15, 1, 1
    FROM DUAL),
    hier AS
    SELECT 1 ID, 11 l1, 21 l2, 31 l3
    FROM DUAL
    UNION ALL
    SELECT 2, 11, 21, 31
    FROM DUAL
    UNION ALL
    SELECT 3, 12, 21, 31
    FROM DUAL
    UNION ALL
    SELECT 4, 13, 22, 31
    FROM DUAL
    UNION ALL
    SELECT 5, 11, 21, 31
    FROM DUAL
    UNION ALL
    SELECT 6, 12, 21, 31
    FROM DUAL
    UNION ALL
    SELECT 7, 13, 22, 31
    FROM DUAL
    UNION ALL
    SELECT 8, 14, 23, 32
    FROM DUAL
    UNION ALL
    SELECT 9, 11, 21, 31
    FROM DUAL)
    SELECT 'ALL' lev, SUM (val) avg_
    FROM data_
    UNION ALL
    SELECT 'ATTR1 = ' || attr1, SUM (val)
    FROM data_
    GROUP BY attr1
    UNION ALL
    SELECT 'ATTR2 = ' || attr2, SUM (val)
    FROM data_
    GROUP BY attr2
    UNION ALL
    SELECT 'L3 = ' || l3, SUM (val)
    FROM data_ d, hier h
    WHERE d.ID = h.ID AND l3 IN (SELECT l3
    FROM hier
    WHERE l1 = :l1)
    GROUP BY l3
    UNION ALL
    SELECT 'L2 = ' || l2, SUM (val)
    FROM data_ d, hier h
    WHERE d.ID = h.ID AND l2 IN (SELECT l2
    FROM hier
    WHERE l1 = :l1)
    GROUP BY l2
    UNION ALL
    SELECT 'L1 = ' || l1, SUM (val)
    FROM data_ d, hier h
    WHERE d.ID = h.ID AND l1 = :l1
    GROUP BY l1
    UNION ALL
    SELECT 'ID = ' || h.ID, val
    FROM data_ d, hier h
    WHERE d.ID = h.ID AND l1 = :l1
    Now it looks like
    WITH data_ AS
    SELECT 1 ID, 20 val, 1 attr1, 1 attr2
    FROM DUAL
    UNION ALL
    SELECT 2, 30, 0, 1
    FROM DUAL
    UNION ALL
    SELECT 3, 40, 1, 1
    FROM DUAL
    UNION ALL
    SELECT 4, 50, 0, 0
    FROM DUAL
    UNION ALL
    SELECT 5, 60, 1, 0
    FROM DUAL
    UNION ALL
    SELECT 6, 70, 0, 1
    FROM DUAL
    UNION ALL
    SELECT 7, 80, 1, 1
    FROM DUAL
    UNION ALL
    SELECT 8, 10, 1, 0
    FROM DUAL
    UNION ALL
    SELECT 9, 15, 1, 1
    FROM DUAL),
    hier AS
    SELECT 1 ID, 11 l1, 21 l2, 31 l3
    FROM DUAL
    UNION ALL
    SELECT 2, 11, 21, 31
    FROM DUAL
    UNION ALL
    SELECT 3, 12, 21, 31
    FROM DUAL
    UNION ALL
    SELECT 4, 13, 22, 31
    FROM DUAL
    UNION ALL
    SELECT 5, 11, 21, 31
    FROM DUAL
    UNION ALL
    SELECT 6, 12, 21, 31
    FROM DUAL
    UNION ALL
    SELECT 7, 13, 22, 31
    FROM DUAL
    UNION ALL
    SELECT 8, 14, 23, 32
    FROM DUAL
    UNION ALL
    SELECT 9, 11, 21, 31
    FROM DUAL),
    level_id AS
    (SELECT 11 l
    FROM DUAL)
    SELECT DECODE (GROUPING_ID (attr2, attr1),
    1, 'ATTR2 = ' || attr2,
    2, 'ATTR1 = ' || attr1,
    3, 'All'
    ) lev,
    SUM (val)
    FROM data_
    GROUP BY CUBE (attr2, attr1)
    HAVING GROUPING_ID (attr2, attr1) > 0
    UNION ALL
    SELECT lev, val
    FROM (SELECT DECODE (GROUPING_ID (d.ID, l1, l2, l3),
    11, 'L1 = ' || l1,
    13, 'L2 = ' || l2,
    14, 'L3 = ' || l3,
    'ID = ' || d.ID
    ) lev,
    SUM (val) val
    FROM data_ d, hier h, level_id
    WHERE d.ID = h.ID AND h.l3 IN (SELECT h1.l3
    FROM hier h1
    WHERE h1.l1 = l)
    GROUP BY CUBE (d.ID, l3, l2, l1)
    HAVING (h.l1 IS NULL OR l1 = l)
    AND GROUPING_ID (d.ID, l1, l2, l3) IN (14, 13, 11, 0)
    AND (h.l2 IS NULL OR h.l2 = (SELECT UNIQUE h1.l2
    FROM hier h1
    WHERE h1.l1 = l))
    ORDER BY GROUPING_ID (d.ID, l1, l2, l3) DESC)

    Nobody can optimize you query just from having the query. We don't know anything about your database, your data, your database configuration, table structures, indexes, or what the query is supposed to achieve etc. etc. etc.
    Take a look at this thread...
    When your query takes too long ...

  • How to optimize the query

    Hi,
    This below query is taking more than 1hour. So I want to optimize this query.Any suggestion is appriciated.
    In Table customer_details total number of records are 40,000. Among which custno with id='J' are 7000.
    select distinct(A.custno)
    from
    (select distinct custno,id,
    case
    when id='I'
    then 0
    else 1
    end as myid from customer_details where custno not in
    (select custno from customer_details where id='J'))A
    group by A.custno
    having sum(A.myid)>0

    Why instead of
                  from   customer_details
                 where   custno not in (select   custno
                                          from   customer_details
                                         where   id = 'J')
    ...not simply
                  from   customer_details
                 where   custno != 'J'
    ...?

  • I am trying to create a multi provider ? how to optimize my query performan

    hi,
    I am trying to creating a multi provider using four ods ? can anyone let me know how to optimize my query performance. Since my query takes a lot of time to get executed.
    If anyone has any docs for query optimization that is built based on multi provider pls do send it to my email id [email protected]
    regds
    haritha

    hi wond,
    Thanxs a lot for the quick response. Can you let me know how to create secondary indexes on ods and about partioning to be carried out.
    if u have any docs or url can you pls share. my email id [email protected]
    regds
    haritha

  • Need to optimize a query....

    select AC.ACCT_ID,
    AC.EFF_STR_DT AC_EFF_STR_DT,
    AC.EFF_END_DT AC_EFF_END_DT,
    (select min(CORP_ACCT_ID)
    from D236OT00.GOLD_CUST_CSR_ACC GA
    where (AC.WBS_CD_LEVEL_01 = GA.CORP_ACCT_ID)) CORP_ACCT_ID,
    ASEG.SEGMENT_TYPE,
    ASEG.SEGMENT_CODE,
    AC.WBS_CD_LEVEL_01,
    AC.WBS_CD_LEVEL_02,
    AC.WBS_CD_LEVEL_03,
    AC.WBS_CD_LEVEL_04,
    AC.WBS_CD_LEVEL_05,
    AC.WBS_CD_LEVEL_06,
    AC.WBS_CD_LEVEL_07,
    AC.WBS_CD_LEVEL_08,
    AC.WBS_CD_LEVEL_09,
    AC.WBS_CD_LEVEL_10
    from D236OT00.ACC1_ACCOUNT_NB AC LEFT OUTER JOIN D236OT00.ASEG_ACCT_SEG_NB ASEG
    ON(AC.ACCT_ID = ASEG.ACCT_ID and ASEG.RECORD_EFF_END_DT = '9999-12-31'
    and ASEG.RECORD_EFF_END_TM = '23.59.59'
    and CURRENT DATE between ASEG.EFF_STR_DT and ASEG.EFF_END_DT)
    where AC.ACCT_ID = ? and AC.RECORD_EFF_END_DT = '9999-12-31' and
    AC.EFF_END_DT > CURRENT DATE and AC.INTR_CMPNY_CD in ('PO', 'BO') and
    AC.ACCT_STAT_CD not in ('O', 'V', 'S')
    how can i optimize this query for better performance?

    Try this version
    select AC.ACCT_ID,
    AC.EFF_STR_DT AC_EFF_STR_DT,
    AC.EFF_END_DT AC_EFF_END_DT,
    crop_acct.exp,
    ASEG.SEGMENT_TYPE,
    ASEG.SEGMENT_CODE,
    AC.WBS_CD_LEVEL_01,
    AC.WBS_CD_LEVEL_02,
    AC.WBS_CD_LEVEL_03,
    AC.WBS_CD_LEVEL_04,
    AC.WBS_CD_LEVEL_05,
    AC.WBS_CD_LEVEL_06,
    AC.WBS_CD_LEVEL_07,
    AC.WBS_CD_LEVEL_08,
    AC.WBS_CD_LEVEL_09,
    AC.WBS_CD_LEVEL_10
    from D236OT00.ACC1_ACCOUNT_NB AC,
    D236OT00.ASEG_ACCT_SEG_NB ASEG ,
    (select min(CORP_ACCT_ID) exp
    from D236OT00.GOLD_CUST_CSR_ACC GA
    ) CORP_ACCT,
    where AC.ACCT_ID = ASEG.ACCT_ID
    and ASEG.RECORD_EFF_END_DT = '9999-12-31'
    and ASEG.RECORD_EFF_END_TM = '23.59.59'
    and CURRENTDATE between ASEG.EFF_STR_DT and ASEG.EFF_END_DT
    and AC.ACCT_ID = ?
    and AC.RECORD_EFF_END_DT = '9999-12-31'
    and AC.EFF_END_DT > CURRENTDATE
    and AC.INTR_CMPNY_CD exists ('PO', 'BO')
    and AC.ACCT_STAT_CD not exists ('O', 'V', 'S')
    See if it works

  • Can anyone tell me how can i optimize this query...

    Can anyone tell me how can i optimize this query ??? :
    Select Distinct eopersona.numident From rscompeten , rscompet , rscv , eopersona , rscurso , rseduca , rsexplab , rsinteres
    Where ( ( (LOWER (rscompeten.nombre LIKE '%caracas%') AND ( rscompeten.id = rscompet.idcompeten ) AND ( rscv.id = rscompet.idcv ) AND ( eopersona.id = rscv.idpersona ) )
    OR ( (LOWER (rscurso.nombre) LIKE '%caracas%') AND ( rscv.id = rscurso.idcv ) AND ( eopersona.id = rscv.idpersona ) )
    OR ( (LOWER (rscurso.lugar) LIKE '%caracas%') AND ( rscv.id = rscurso.idcv ) AND ( eopersona.id = rscv.idpersona ) )
    OR ( (LOWER (rseduca.univinst) LIKE '%caracas%)' AND ( rscv.id = rseduca.idcv ) AND ( eopersona.id = rscv.idpersona ) )
    OR ( (LOWER (rsexplab.nombempre) LIKE '%caracas%' AND ( rscv.id = rsexplab.idcv ) AND ( eopersona.id = rscv.idpersona ) )
    OR ( (LOWER (rsinteres.descrip) LIKE '%caracas%' AND ( rscv.id = rsinteres.idcv ) AND ( eopersona.id = rscv.idpersona ) )
    OR ( (LOWER (rscv.cargoasp) LIKE '%caracas%' AND ( eopersona.id = rscv.idpersona ) )
    OR ( LOWER (eopersona.ciudad) LIKE '%caracas%' AND ( eopersona.id = rscv.idpersona )
    PLEASE IF YOU FIND SOMETHING WRONG.. PLEASE HELP ME.. this query takes me aproximatelly 10 minutes and the database is really small ( with only 200 records on each table )

    You are querying eight tables, however in any of your OR predicates you're only restricting 3 or 4 of those tables. That means that the remaining 4 or 5 tables are generating cartesian products. (n.b. the cartesian product of 5 tables with 200 rows each results in g 200^5 = 320,000,000,000 rows) Then you casually hide this behind "distinct".
    A simple restatement of your requirements looks like this:
    Select eopersona.numident
      From rscompeten,
           rscompet,
           rscv,
           eopersona
    Where LOWER (rscompeten.nombre) LIKE '%caracas%'
       AND rscompeten.id = rscompet.idcompeten
       AND rscv.id = rscompet.idcv
       AND eopersona.id = rscv.idpersona
    UNION
    Select eopersona.numident
      From rscurso ,
           rscv,
           eopersona
    Where LOWER (rscurso.nombre) LIKE '%caracas%'
       AND rscv.id = rscurso.idcv
       AND eopersona.id = rscv.idpersona
    UNION
    Select eopersona.numident
      From rscurso ,
           rscv,
           eopersona
    Where LOWER (rscurso.lugar) LIKE '%caracas%'
       AND rscv.id = rscurso.idcv
       AND eopersona.id = rscv.idpersona
    UNION
    ...From there you can eliminate redundancies as desired, but I imagine that the above will perform admirably with the data volumes you describe.

  • How does XDB optimize XML Query?

    I found the query speed of XDB is much slower than Berkeley XML DB.
    How does XDB optimize XML Query?
    Are there any documents on this subject?
    And can XDB create indices on XMLType ( e.g. the index on element/attribute value and/or structure index)? if yes, how to do that?

    lezhou had a valid question and asked about:
    "I found the query speed of XDB is much slower than Berkeley XML DB"
    "How does XDB optimize XML Query?"
    These point to a "XML DB Concepts Guide", which does not yet exist.
    The procedures are explained, the methods are explained. If you enable event tracing as described in the XMLDB Developers Guide 10gR2, you will see statements in your trace file which will tell you more about the XML DB architecture (and therefor you can deduct performance impact) then the manual will reveal.
    An other example:
    The xdbconfig.xsd file is neatly explained - in regards of http-port-etc
    But not what the implecations are if you alter one of the other ones (the not explained parameters).
    If you know the architecture (GROUND LEVEL), you can give an correct answer to the initial question "I found the query speed of XDB is much slower than Berkeley XML DB. How does XDB optimize XML Query?"
    The balanced tree index is constructed the same way (on the same theory) in Oracle, DB2, but apparantly X is faster because in with the same buildup/architecture/databasestructure for both products, with the same data, with the same X --> value Y is beter constructed and delivers a better performance.
    apples = apples
    oracle xmldb = berkeley xmldb --> how can i test the o.apples=b.apples and that under these circumstances o.apples are faster ;-)
    THEREFOR:
    "I have to disagree a little bit...("It speaks about all these in detail").
    Still waiting for the XMLDB Concepts Guide / Administrators Guide / Performance Guide.

  • Optimization select query...

    Hi..
    The below select query is causing performance issue in production , it is taking much time.
    Please suggest how to optimize it .
    SELECT belnr bukrs gjahr awkey blart FROM bkpf
    INTO TABLE t_bkpf
             WHERE bukrs IN s_bukrs AND
                   gjahr IN r_year.
    Regards
    chetan
    Moderator message - Please see Please Read before Posting in the Performance and Tuning Forum before posting - post locked
    Edited by: Rob Burbank on Oct 13, 2009 10:49 AM

    Hi Chetan,
    I suggest the following to optimize your performance.
    - Change the order of the fields (belnr bukrs gjahr awkey blart), so that they're in the same order than showned in SE11 table data definition (you may need to change the order in t_bkpf definiton also).
    - Add the client in your select statement.
    Something like this:
    SELECT bukrs belnr gjahr blart awkey FROM bkpf CLIENT SPECIFIED
    INTO TABLE t_bkpf
    WHERE mandt = sy-mandt
    AND bukrs IN s_bukrs
    AND gjahr IN r_year.
    Your statement it's very simple. I don't think that there is much more to do.
    Hope that helps.
    Kind regards.
    Edited by: Bruno Garcia on Oct 10, 2009 10:48 AM

  • Optimize SQL  query

    Hi All,
    Please help me to optimize my below SQL  query :
    delete from BATCH_REQUEST_RESPONSE where (SOState='ResponseReceived' or SOState='Header’ or SOState='InvalidSO’) and ACKREC='Y' and SourceAgentId=? and BATCH_REQUEST_RESPONSE.TransactionId NOT EXISTS (select transactionid from SORECORD)
    Note: Result of (select transactionid from SORECORD ) could be till 100 K
    Regards,
    Dheeraj

    Maybe - I'm not sure what you're after
    delete from batch_request_response brr
    where sostate in ('ResponseReceived','Header','InvalidSO')
       and ackrec = 'Y'
       and sourceagentid = :agent_id
       and not exists(select null
                        from sorecord
                       where transactionid = brr.transactionid
    delete from batch_request_response brr
    where sostate in ('ResponseReceived','Header','InvalidSO')
       and ackrec = 'Y'
       and sourceagentid = :agent_id
       and 0 = (select count(*)
                  from sorecord
               ) /* if sorecord must be empty */
    Regards
    Etbin

  • How To Optimize a query

    Hi,
    I need to optimize or rewrite the following query, is there anyone who can help me?
    SELECT *
      FROM
            SELECT a.CONTRACT_ID AS SERVICE_ORDER_HEAD_ID,
                   C.CONDITION_TYPE_ID,
                   b.VALUE_CONDITION_AMT AS AMOUNT,
                   b.BASE_CONDITION_AMT  AS BASE_AMOUNT,
                   b.TOTAL_AMT           AS TOT_AMOUNT
              FROM QTST_CONTRACT_PRICE_COND A,
                   COPE_ORDER_CONDITION B,
                   COSM_ORDER_CONDITION_DE_L C,
                   COSM_CONDITION_CLASS_L D,
                   COSM_CONDITION_METHOD_L E,
    --- PARTE MODIFICATA   
                   MT_SETUP_PARAMETERS M,  
                   SRST_SERVICE_ORDER_ITEM S       
             WHERE A.PRICE_CONDITION_ID = B.PRICE_CONDITION_ID(+)
               AND A.POSITION_ID          = B.POSITION_ID(+)
               AND A.LEVEL_ID             = B.LEVEL_ID(+)
               AND A.CONDITION_COUNTER_ID = B.CONDITION_COUNTER_ID(+)
               AND B.APPL_FK              = C.APPL_ID(+)
               AND B.USAGE_FK             = C.USAGE_ID(+)
               AND B.CONDITION_TYPE_FK    = C.CONDITION_TYPE_ID(+)
               AND B.CONDITION_CLASS_FK = D.CONDITION_CLASS_ID(+)
               AND B.CONDITION_METHOD_FK = E.CONDITION_METHOD_ID(+)
    --- PARTE MODIFICATA
    --          AND a.POSITION_ID IN  ( SELECT SERVICE_ORDER_ITEM_ID FROM SRST_SERVICE_ORDER_ITEM )
               AND a.POSITION_ID  = S.SERVICE_ORDER_ITEM_ID
               AND A.CONDITION_COUNTER_ID = (SELECT MAX(A_I.CONDITION_COUNTER_ID)
                                               FROM QTST_CONTRACT_PRICE_COND A_I
                                              WHERE a.CONTRACT_ID      = a_i.CONTRACT_ID
                                                AND a.PRICE_CONDITION_ID = a_i.PRICE_CONDITION_ID
                                                AND a.POSITION_ID        = a_i.POSITION_ID
                                                AND a.LEVEL_ID           = a_i.LEVEL_ID
    --- PARTE MODIFICATA
                AND B.CONDITION_TYPE_FK = M.parameter_value_id
                AND m.object_name_id = 'SRSA_SERVICE_ORDER_CONDITION'
                and m.field_id = 'CONDITION_TYPE_FK'
                and m.x_delete = '0'
        ) pivot (MAX(AMOUNT) AS AMOUNT,
                 MAX(BASE_AMOUNT) AS BASE_AMOUNT,
                 MAX(TOT_AMOUNT) AS TOT_AMOUNT
                 FOR CONDITION_TYPE_ID IN ('ZIAC' ROLE, 'ZIAD' RECOVERY_COMP, 'ZIAE' ROLE_TOTAL, 'ZIAF' CANCEL_REQU,
                                           'ZIAG' PAYMENTS, 'ZIAH' CANCEL_OBT, 'ZIAI' REC_BY_REMB, 'ZIAJ' CREDIT_NOTE,
                                           'ZIAK' BILL_TO_CUST, 'ZIAL' CHARGED_TO_SUPPL, 'ZIAM' CHARGED_TO_CUST, 'ZIAN' RECHARGE_CUST,
                                           'ZIAO' POSTAGE, 'ZIAV' FINE_TO_PAY, 'ZIAW' SUPPLIER_FEE, 'ZIAX' ROLE_TOT_TO_PAY,
                                           'ZIAY' FINE_AMOUNT, 'ZIRA' ROAD_TAX, 'ZIRB' ROAD_TAX_PAID, 'ZIRC' TOTAL_TAX_DUE,
                                           'ZIRD' SANCTION, 'ZIRE' NOTIFICATIONS, 'ZIRF' INTEREST, 'ZIRG' ROAD_TAX_TOT_PAY,
                                           'ZIRH' ROAD_TAX_CONTR_PAY ) ) ;
    Thanks
    Stefano

    I attach the explain plan,
    of the select Suggested by RaminHashimzadeh
    you can optimize?
    | Id  | Operation                                      | Name                         | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     | Pstart| Pstop |    TQ  |IN-OUT| PQ Distrib |
    |   0 | SELECT STATEMENT                               |                              |    55 | 57090 |       |  3380   (2)| 00:00:48 |       |       |        |      |            |
    |   1 |  TEMP TABLE TRANSFORMATION                     |                              |       |       |       |            |          |       |       |        |      |            |
    |   2 |   LOAD AS SELECT                               | SYS_TEMP_0FD9D673E_F303A87C  |       |       |       |            |          |       |       |        |      |            |
    |   3 |    VIEW                                        |                              |    11 |  4741 |       |    21   (5)| 00:00:01 |       |       |        |      |            |
    |   4 |     UNION-ALL                                  |                              |       |       |       |            |          |       |       |        |      |            |
    |*  5 |      VIEW                                      |                              |    10 |  4440 |       |    19   (6)| 00:00:01 |       |       |        |      |            |
    |*  6 |       WINDOW SORT PUSHED RANK                  |                              |    10 |   570 |       |    19   (6)| 00:00:01 |       |       |        |      |            |
    |   7 |        MERGE JOIN CARTESIAN                    |                              |    10 |   570 |       |    18   (0)| 00:00:01 |       |       |        |      |            |
    |   8 |         INDEX FULL SCAN                        | MT_REPORTING_LOCALIZATION_PK |     1 |     2 |       |     1   (0)| 00:00:01 |       |       |        |      |            |
    |   9 |         BUFFER SORT                            |                              |    10 |   550 |       |    18   (6)| 00:00:01 |       |       |        |      |            |
    |  10 |          TABLE ACCESS FULL                     | COSM_CONDITION_CLASS         |    10 |   550 |       |    17   (0)| 00:00:01 |       |       |        |      |            |
    |  11 |      FAST DUAL                                 |                              |     1 |       |       |     2   (0)| 00:00:01 |       |       |        |      |            |
    |  12 |   PX COORDINATOR                               |                              |       |       |       |            |          |       |       |        |      |            |
    |  13 |    PX SEND QC (RANDOM)                         | :TQ10003                     |    55 |  9845 |       |    38   (3)| 00:00:01 |       |       |  Q1,03 | P->S | QC (RAND)  |
    |  14 |     LOAD AS SELECT                             | SYS_TEMP_0FD9D673F_F303A87C  |       |       |       |            |          |       |       |  Q1,03 | PCWP |            |
    |  15 |      VIEW                                      |                              |    55 |  9845 |       |    38   (3)| 00:00:01 |       |       |  Q1,03 | PCWP |            |
    |  16 |       UNION-ALL                                |                              |       |       |       |            |          |       |       |  Q1,03 | PCWP |            |
    |* 17 |        VIEW                                    |                              |    54 | 10368 |       |    36   (3)| 00:00:01 |       |       |  Q1,03 | PCWP |            |
    |* 18 |         WINDOW SORT PUSHED RANK                |                              |    54 |  3240 |       |    36   (3)| 00:00:01 |       |       |  Q1,03 | PCWP |            |
    |  19 |          PX RECEIVE                            |                              |    54 |  3240 |       |    36   (3)| 00:00:01 |       |       |  Q1,03 | PCWP |            |
    |  20 |           PX SEND HASH                         | :TQ10002                     |    54 |  3240 |       |    36   (3)| 00:00:01 |       |       |  Q1,02 | P->P | HASH       |
    |* 21 |            WINDOW CHILD PUSHED RANK            |                              |    54 |  3240 |       |    36   (3)| 00:00:01 |       |       |  Q1,02 | PCWP |            |
    |  22 |             MERGE JOIN CARTESIAN               |                              |    54 |  3240 |       |    35   (0)| 00:00:01 |       |       |  Q1,02 | PCWP |            |
    |  23 |              BUFFER SORT                       |                              |       |       |       |            |          |       |       |  Q1,02 | PCWC |            |
    |  24 |               PX RECEIVE                       |                              |     1 |     2 |       |     1   (0)| 00:00:01 |       |       |  Q1,02 | PCWP |            |
    |  25 |                PX SEND BROADCAST               | :TQ10000                     |     1 |     2 |       |     1   (0)| 00:00:01 |       |       |        | S->P | BROADCAST  |
    |  26 |                 INDEX FULL SCAN                | MT_REPORTING_LOCALIZATION_PK |     1 |     2 |       |     1   (0)| 00:00:01 |       |       |        |      |            |
    |  27 |              BUFFER SORT                       |                              |    54 |  3132 |       |    35   (3)| 00:00:01 |       |       |  Q1,02 | PCWP |            |
    |  28 |               PX BLOCK ITERATOR                |                              |    54 |  3132 |       |    33   (0)| 00:00:01 |       |       |  Q1,02 | PCWC |            |
    |  29 |                TABLE ACCESS FULL               | COSM_CONDITION_METHOD        |    54 |  3132 |       |    33   (0)| 00:00:01 |       |       |  Q1,02 | PCWP |            |
    |  30 |        BUFFER SORT                             |                              |       |       |       |            |          |       |       |  Q1,03 | PCWC |            |
    |  31 |         PX RECEIVE                             |                              |     1 |       |       |     2   (0)| 00:00:01 |       |       |  Q1,03 | PCWP |            |
    |  32 |          PX SEND ROUND-ROBIN                   | :TQ10001                     |     1 |       |       |     2   (0)| 00:00:01 |       |       |        | S->P | RND-ROBIN  |
    |  33 |           FAST DUAL                            |                              |     1 |       |       |     2   (0)| 00:00:01 |       |       |        |      |            |
    |  34 |   PX COORDINATOR                               |                              |       |       |       |            |          |       |       |        |      |            |
    |  35 |    PX SEND QC (RANDOM)                         | :TQ20003                     |  1480 |   835K|       |    32   (4)| 00:00:01 |       |       |  Q2,03 | P->S | QC (RAND)  |
    |  36 |     LOAD AS SELECT                             | SYS_TEMP_0FD9D673D_F303A87C  |       |       |       |            |          |       |       |  Q2,03 | PCWP |            |
    |  37 |      VIEW                                      |                              |  1480 |   835K|       |    32   (4)| 00:00:01 |       |       |  Q2,03 | PCWP |            |
    |  38 |       UNION-ALL                                |                              |       |       |       |            |          |       |       |  Q2,03 | PCWP |            |
    |* 39 |        VIEW                                    |                              |  1479 |   853K|       |    30   (4)| 00:00:01 |       |       |  Q2,03 | PCWP |            |
    |* 40 |         WINDOW SORT PUSHED RANK                |                              |  1479 |   102K|       |    30   (4)| 00:00:01 |       |       |  Q2,03 | PCWP |            |
    |  41 |          PX RECEIVE                            |                              |  1479 |   102K|       |    30   (4)| 00:00:01 |       |       |  Q2,03 | PCWP |            |
    |  42 |           PX SEND HASH                         | :TQ20002                     |  1479 |   102K|       |    30   (4)| 00:00:01 |       |       |  Q2,02 | P->P | HASH       |
    |* 43 |            WINDOW CHILD PUSHED RANK            |                              |  1479 |   102K|       |    30   (4)| 00:00:01 |       |       |  Q2,02 | PCWP |            |
    |  44 |             MERGE JOIN CARTESIAN               |                              |  1479 |   102K|       |    29   (0)| 00:00:01 |       |       |  Q2,02 | PCWP |            |
    |  45 |              BUFFER SORT                       |                              |       |       |       |            |          |       |       |  Q2,02 | PCWC |            |
    |  46 |               PX RECEIVE                       |                              |     1 |     2 |       |     1   (0)| 00:00:01 |       |       |  Q2,02 | PCWP |            |
    |  47 |                PX SEND BROADCAST               | :TQ20000                     |     1 |     2 |       |     1   (0)| 00:00:01 |       |       |        | S->P | BROADCAST  |
    |  48 |                 INDEX FULL SCAN                | MT_REPORTING_LOCALIZATION_PK |     1 |     2 |       |     1   (0)| 00:00:01 |       |       |        |      |            |
    |  49 |              BUFFER SORT                       |                              |  1479 |    99K|       |    29   (4)| 00:00:01 |       |       |  Q2,02 | PCWP |            |
    |  50 |               PX BLOCK ITERATOR                |                              |  1479 |    99K|       |    26   (0)| 00:00:01 |       |       |  Q2,02 | PCWC |            |
    |  51 |                TABLE ACCESS FULL               | COSM_ORDER_CONDITION_DE      |  1479 |    99K|       |    26   (0)| 00:00:01 |       |       |  Q2,02 | PCWP |            |
    |  52 |        BUFFER SORT                             |                              |       |       |       |            |          |       |       |  Q2,03 | PCWC |            |
    |  53 |         PX RECEIVE                             |                              |     1 |       |       |     2   (0)| 00:00:01 |       |       |  Q2,03 | PCWP |            |
    |  54 |          PX SEND ROUND-ROBIN                   | :TQ20001                     |     1 |       |       |     2   (0)| 00:00:01 |       |       |        | S->P | RND-ROBIN  |
    |  55 |           FAST DUAL                            |                              |     1 |       |       |     2   (0)| 00:00:01 |       |       |        |      |            |
    |  56 |   PX COORDINATOR                               |                              |       |       |       |            |          |       |       |        |      |            |
    |  57 |    PX SEND QC (RANDOM)                         | :TQ30009                     |    55 | 57090 |       |  3380   (2)| 00:00:48 |       |       |  Q3,09 | P->S | QC (RAND)  |
    |  58 |     VIEW                                       |                              |    55 | 57090 |       |  3380   (2)| 00:00:48 |       |       |  Q3,09 | PCWP |            |
    |* 59 |      FILTER                                    |                              |       |       |       |            |          |       |       |  Q3,09 | PCWC |            |
    |  60 |       TRANSPOSE                                |                              |       |       |       |            |          |       |       |  Q3,09 | PCWC |            |
    |  61 |        SORT GROUP BY                           |                              |    55 |  5115 |       |  3380   (2)| 00:00:48 |       |       |  Q3,09 | PCWP |            |
    |  62 |         PX RECEIVE                             |                              |    55 |  5115 |       |  3380   (2)| 00:00:48 |       |       |  Q3,09 | PCWP |            |
    |  63 |          PX SEND HASH                          | :TQ30008                     |    55 |  5115 |       |  3380   (2)| 00:00:48 |       |       |  Q3,08 | P->P | HASH       |
    |  64 |           SORT GROUP BY PIVOT                  |                              |    55 |  5115 |       |  3380   (2)| 00:00:48 |       |       |  Q3,08 | PCWP |            |
    |* 65 |            VIEW                                |                              |  7757 |   704K|       |  3379   (2)| 00:00:48 |       |       |  Q3,08 | PCWP |            |
    |* 66 |             WINDOW SORT PUSHED RANK            |                              |  7757 |  2386K|  2560K|  3379   (2)| 00:00:48 |       |       |  Q3,08 | PCWP |            |
    |  67 |              PX RECEIVE                        |                              |  7757 |  2386K|       |  3379   (2)| 00:00:48 |       |       |  Q3,08 | PCWP |            |
    |  68 |               PX SEND HASH                     | :TQ30007                     |  7757 |  2386K|       |  3379   (2)| 00:00:48 |       |       |  Q3,07 | P->P | HASH       |
    |* 69 |                WINDOW CHILD PUSHED RANK        |                              |  7757 |  2386K|       |  3379   (2)| 00:00:48 |       |       |  Q3,07 | PCWP |            |
    |* 70 |                 HASH JOIN RIGHT OUTER          |                              |  7757 |  2386K|       |  3377   (2)| 00:00:48 |       |       |  Q3,07 | PCWP |            |
    |  71 |                  PX RECEIVE                    |                              |  1480 | 28120 |       |    43   (3)| 00:00:01 |       |       |  Q3,07 | PCWP |            |
    |  72 |                   PX SEND BROADCAST            | :TQ30005                     |  1480 | 28120 |       |    43   (3)| 00:00:01 |       |       |  Q3,05 | P->P | BROADCAST  |
    |  73 |                    VIEW                        | COSM_ORDER_CONDITION_DE_L    |  1480 | 28120 |       |    43   (3)| 00:00:01 |       |       |  Q3,05 | PCWP |            |
    |  74 |                     VIEW                       |                              |  1480 | 28120 |       |    11   (0)| 00:00:01 |       |       |  Q3,05 | PCWP |            |
    |  75 |                      PX BLOCK ITERATOR         |                              |  1480 |   835K|       |    11   (0)| 00:00:01 |       |       |  Q3,05 | PCWC |            |
    |  76 |                       TABLE ACCESS FULL        | SYS_TEMP_0FD9D673D_F303A87C  |  1480 |   835K|       |    11   (0)| 00:00:01 |       |       |  Q3,05 | PCWP |            |
    |* 77 |                  HASH JOIN                     |                              |  4098 |  1184K|       |  3334   (2)| 00:00:47 |       |       |  Q3,07 | PCWP |            |
    |  78 |                   BUFFER SORT                  |                              |       |       |       |            |          |       |       |  Q3,07 | PCWC |            |
    |  79 |                    PX RECEIVE                  |                              | 22296 |   718K|       |    47   (0)| 00:00:01 |       |       |  Q3,07 | PCWP |            |
    |  80 |                     PX SEND HASH               | :TQ30002                     | 22296 |   718K|       |    47   (0)| 00:00:01 |       |       |        | S->P | HASH       |
    |  81 |                      PARTITION HASH ALL        |                              | 22296 |   718K|       |    47   (0)| 00:00:01 |     1 |     4 |        |      |            |
    |  82 |                       INDEX FAST FULL SCAN     | SRST_SERVICE_ORDER_ITEM_PK   | 22296 |   718K|       |    47   (0)| 00:00:01 |     1 |     4 |        |      |            |
    |  83 |                   PX RECEIVE                   |                              |  4098 |  1052K|       |  3286   (2)| 00:00:47 |       |       |  Q3,07 | PCWP |            |
    |  84 |                    PX SEND HASH                | :TQ30006                     |  4098 |  1052K|       |  3286   (2)| 00:00:47 |       |       |  Q3,06 | P->P | HASH       |
    |* 85 |                     HASH JOIN                  |                              |  4098 |  1052K|       |  3286   (2)| 00:00:47 |       |       |  Q3,06 | PCWP |            |
    |  86 |                      PX RECEIVE                |                              |  3992 |   612K|       |  1757   (2)| 00:00:25 |       |       |  Q3,06 | PCWP |            |
    |  87 |                       PX SEND BROADCAST        | :TQ30004                     |  3992 |   612K|       |  1757   (2)| 00:00:25 |       |       |  Q3,04 | P->P | BROADCAST  |
    |* 88 |                        HASH JOIN RIGHT OUTER   |                              |  3992 |   612K|       |  1757   (2)| 00:00:25 |       |       |  Q3,04 | PCWP |            |
    |  89 |                         PX RECEIVE             |                              |    55 |   330 |       |    40   (3)| 00:00:01 |       |       |  Q3,04 | PCWP |            |
    |  90 |                          PX SEND BROADCAST     | :TQ30003                     |    55 |   330 |       |    40   (3)| 00:00:01 |       |       |  Q3,03 | P->P | BROADCAST  |
    |  91 |                           VIEW                 | COSM_CONDITION_METHOD_L      |    55 |   330 |       |    40   (3)| 00:00:01 |       |       |  Q3,03 | PCWP |            |
    |  92 |                            VIEW                |                              |    55 |   330 |       |     2   (0)| 00:00:01 |       |       |  Q3,03 | PCWP |            |
    |  93 |                             PX BLOCK ITERATOR  |                              |    55 |  9845 |       |     2   (0)| 00:00:01 |       |       |  Q3,03 | PCWC |            |
    |  94 |                              TABLE ACCESS FULL | SYS_TEMP_0FD9D673F_F303A87C  |    55 |  9845 |       |     2   (0)| 00:00:01 |       |       |  Q3,03 | PCWP |            |
    |* 95 |                         HASH JOIN RIGHT OUTER  |                              |  3992 |   588K|       |  1717   (2)| 00:00:25 |       |       |  Q3,04 | PCWP |            |
    |  96 |                          BUFFER SORT           |                              |       |       |       |            |          |       |       |  Q3,04 | PCWC |            |
    |  97 |                           PX RECEIVE           |                              |    11 |    33 |       |    23   (5)| 00:00:01 |       |       |  Q3,04 | PCWP |            |
    |  98 |                            PX SEND BROADCAST   | :TQ30000                     |    11 |    33 |       |    23   (5)| 00:00:01 |       |       |        | S->P | BROADCAST  |
    |  99 |                             VIEW               | COSM_CONDITION_CLASS_L       |    11 |    33 |       |    23   (5)| 00:00:01 |       |       |        |      |            |
    | 100 |                              VIEW              |                              |    11 |    33 |       |     2   (0)| 00:00:01 |       |       |        |      |            |
    | 101 |                               TABLE ACCESS FULL| SYS_TEMP_0FD9D673E_F303A87C  |    11 |  4741 |       |     2   (0)| 00:00:01 |       |       |        |      |            |
    |*102 |                          HASH JOIN             |                              |  3992 |   576K|       |  1693   (2)| 00:00:24 |       |       |  Q3,04 | PCWP |            |
    | 103 |                           BUFFER SORT          |                              |       |       |       |            |          |       |       |  Q3,04 | PCWC |            |
    | 104 |                            PX RECEIVE          |                              |     1 |    49 |       |     1   (0)| 00:00:01 |       |       |  Q3,04 | PCWP |            |
    | 105 |                             PX SEND BROADCAST  | :TQ30001                     |     1 |    49 |       |     1   (0)| 00:00:01 |       |       |        | S->P | BROADCAST  |
    |*106 |                              INDEX RANGE SCAN  | MT_SETUP_PARAMETERS_PK       |     1 |    49 |       |     1   (0)| 00:00:01 |       |       |        |      |            |
    | 107 |                           PX BLOCK ITERATOR    |                              |  1560K|   147M|       |  1688   (2)| 00:00:24 |     1 |     4 |  Q3,04 | PCWC |            |
    |*108 |                            TABLE ACCESS FULL   | COPE_ORDER_CONDITION         |  1560K|   147M|       |  1688   (2)| 00:00:24 |     1 |1048575|  Q3,04 | PCWP |            |
    | 109 |                      PX BLOCK ITERATOR         |                              |  1560K|   157M|       |  1525   (1)| 00:00:22 |     1 |     4 |  Q3,06 | PCWC |            |
    | 110 |                       TABLE ACCESS FULL        | QTST_CONTRACT_PRICE_COND     |  1560K|   157M|       |  1525   (1)| 00:00:22 |     1 |     4 |  Q3,06 | PCWP |            |

  • Please optimize the query

    Hi,
    I have a query that will select the same tables and using Subquery. The query is taking too much time as the table has more records. Can anyone help to modify the query which can take minimum time. Thanks in Advance.
    Below is the query
    SELECT
    SIK_ROLLE_ID,SIK_OBJEKT_ID,SIK_AFTALE_ID,SIK_AFTALE_TP,ROLLE_TP,KNID,EJENDOMS_ID,EJENDOMS_TP, VURD_BLB
    ,VURD_VAKD,VURD_DT,HAIRCUT,SIK_VAKD,SIK_FOER_BLB,HAIRCUT_BLB,FORANST_PRIO_BLB,RETTIGHEDER_BLB,SIK_EFTER_BLB
    ,OVERSKREVET_MK,OVERSKREVET_BLB,MAN_HAIRCUT_BLB,MAN_OBJ_E_HCUT_BLB,GLDER_FRA_DT, TRANSAKTIONS_TP,SIK_STATUS_TP
    FROM
    ETZ3EDW.dbo.EWWH_KS_OBJ_KND2_HV A
    WHERE
    A.SIK_AFTALE_TP = 20130 and A.TRANSAKTIONS_TP not in ('S')
    AND A.GLDER_FRA_DT = ( SELECT MAX(B.GLDER_FRA_DT)
    FROM ETZ3EDW.DBO.EWWH_KS_OBJ_KND2_HV B
    WHERE B.GLDER_FRA_DT <= '2014-01-08'
    AND A.SIK_OBJEKT_ID = B.SIK_OBJEKT_ID
    AND A.SIK_AFTALE_ID = B.SIK_AFTALE_ID)

    Can you show us a execution plan of the query?
    CREATE TABLE #tmp (col DATE)
    INSERT INTO #tmp
    SELECT MAX(B.GLDER_FRA_DT)
    FROM ETZ3EDW.DBO.EWWH_KS_OBJ_KND2_HV BJOIN ETZ3EDW.dbo.EWWH_KS_OBJ_KND2_HV AON A.SIK_OBJEKT_ID = B.SIK_OBJEKT_ID
    AND A.SIK_AFTALE_ID = B.SIK_AFTALE_ID
    WHERE B.GLDER_FRA_DT <= '2014-01-08'SELECT
    SIK_ROLLE_ID,SIK_OBJEKT_ID,SIK_AFTALE_ID,SIK_AFTALE_TP,ROLLE_TP,KNID,EJENDOMS_ID,EJENDOMS_TP, VURD_BLB
    ,VURD_VAKD,VURD_DT,HAIRCUT,SIK_VAKD,SIK_FOER_BLB,HAIRCUT_BLB,FORANST_PRIO_BLB,RETTIGHEDER_BLB,SIK_EFTER_BLB
    ,OVERSKREVET_MK,OVERSKREVET_BLB,MAN_HAIRCUT_BLB,MAN_OBJ_E_HCUT_BLB,GLDER_FRA_DT, TRANSAKTIONS_TP,SIK_STATUS_TP
    FROM
    ETZ3EDW.dbo.EWWH_KS_OBJ_KND2_HV A
    WHERE
    A.SIK_AFTALE_TP = 20130 and A.TRANSAKTIONS_TP not in ('S')
    AND A.GLDER_FRA_DT IN (SELECT col FROM #tmp)
    Best Regards,Uri Dimant SQL Server MVP,
    http://sqlblog.com/blogs/uri_dimant/
    MS SQL optimization: MS SQL Development and Optimization
    MS SQL Consulting:
    Large scale of database and data cleansing
    Remote DBA Services:
    Improves MS SQL Database Performance
    SQL Server Integration Services:
    Business Intelligence

  • Optimization of Query

    Hi !!!
    Please anybody can help me ?
    I have this Stand Alone Procedure:
    ==========>
    declare cursor c1 is
         select
         A.UNIT,
         A.CODE,
         A.PREFIX,
         A.PART,
         A.TYPE_CODE,
         B.VALUE
         FROM
         TABLEA A,
         TABLEB B
         WHERE
         A.UNIT||A.CODE||A.PREFIX||A.PART||A.TYPE_CODE =
         B.UNIT||B.CODE||B.PREFIX||B.PART||B.TYPE_CODE
         AND A.VALUE != B.VALUE;
    VARUNIT          TABLEA.UNIT%TYPE;
    VARPREFIX     TABLEA.PREFIX%TYPE;
    VARPART          TABLEA.PART%TYPE;
    VARTYPE_CODE     TABLEA.TYPE_COD%TYPE;
    VARVALUE     TABLEB.VALUE%TYPE;
    BEGIN
         OPEN C1;
         LOOP;
         FETCH C1 INTO VARUNIT,VARPREFIX,VARPART,VARTYPE_CODE,VARVALUE;
         EXIT WHEN C1%NOTFOUND;
         UPDATE TABLEA
         SET VALUE = VARVALUE
         WHERE
         TABLEA.UNIT||TABLEA.CODE||TABLEA.PREFIX||TABLEA.PART||TABLEA.TYPE_CODE =
         VARUNIT||VARCODE||VARPREFIX||VARPART||VARTYPE_CODE;
         COMMIT;
         END LOOP;
    END;
    <===============
    In tableA i have - 170.000 records and in tableB i have - 30.000.
    I need to optimize this procedure, anybody has any idea How i can optimize it ?
    Thanks in advanced.
    Gerson Belini.

    Sure,
    1) Either make a indexed function
        CREATE INDEX TABLEA_N01 ON TABLEA ( Unit || Code || Prefix || Part || Type_Code );
    or
    2)  Make a regular index, and change your query to the below
        CREATE INDEX TABLEA_N01 ON TABLEA ( Unit, Code, Prefix, Part, Type_Code );
    Even creating an index on some of the fields would most likely help
    SELECT  A.Unit
        ,   A.Code
        ,   A.Prefix
        ,   A.Part
        ,   A.Type_Code
        ,   B.Value
    FROM
            TABLEA A
        ,   TABLEB B
    WHERE   A.Unit      = B.Unit
    AND     A.Code      = B.Code
    AND     A.Prefix    = B.Prefix
    AND     A.Part      = B.Part
    AND     A.Type_Code = B.Type_Code
    AND     A.Value       != B.Value;Good Luck,
    Eric Kamradt

  • How should I optimize this query

    Hi
    I have following query
    SELECT /*+ USE_HASH (bp,rp) */ TO_CHAR (part_name)
              FROM base_part bp,risk_assessment_part rp
              WHERE bp.part_number = rp.part_number and risk_activity_code = 1
    Explain Plan for this is
    SELECT STATEMENT Optimizer Mode=CHOOSE
    NESTED LOOPS
    TABLE ACCESS FULL GQTS6USER.BASE_PART                ROWS 4M , BYTES 331M, COST 7731
    INDEX UNIQUE SCAN GQTS6USER.XPK_RISK_ASSESSMENT_PART     ROWS 1,     BYTES 22
    Is there any way to optimize qry execution time???

    Make sure you have indexes on the columns used in join and filter conditions. Gather current statistics. Remove the TO_CHAR. Test the query with and without the hint and compare times and execution plans. Bear in mind the optimizer may choose to ignore a hint if it determines that there is a better plan.

  • Optimize select query

    How can I optimize this select query? Basically, how can I factor out the common codes in the query below
    (i.e. r.batch_id is null AND r.rpt_type='Child' is a common criteria for the two filter conditions)
    SQL:
    SELECT DISTINCT rpt_id, rpt_name, emp_id
    FROM REPORT r
    WHERE r.batch_id is null
    AND r.rpt_type='Child'
    --filter by BU only
    AND (r.BU IN (SELECT BU FROM BUnit WHERE Active='Y'))
    --filter by BU/OU combination
    OR r.batch_id is null
    AND r.rpt_type='Child'
    AND (r.BU || ' ' || R.OU IN (SELECT BU || ' ' || OU FROM BUnit WHERE Active='Y'))
    Thank you.
    Edited by: 874976 on Jul 25, 2011 5:53 PM

    874976 wrote:
    How can I optimize this select query? Basically, how can I factor out the common codes in the query below
    (i.e. r.batch_id is null AND r.rpt_type='Child' is a common criteria for the two filter conditions)
    SQL:
    SELECT DISTINCT rpt_id, rpt_name, emp_id
    FROM REPORT r
    WHERE r.batch_id is null
    AND r.rpt_type='Child'
    --filter by BU only
    AND (r.BU IN (SELECT BU FROM BUnit WHERE Active='Y'))
    --filter by BU/OU combination
    OR r.batch_id is null
    AND r.rpt_type='Child'
    AND (r.BU || ' ' || R.OU IN (SELECT BU || ' ' || OU FROM BUnit WHERE Active='Y'))
    Thank you.
    Edited by: 874976 on Jul 25, 2011 5:53 PM
    How can I optimize this select query? query is already optimized.
    If you disagree, then prove me wrong.

Maybe you are looking for

  • Stuck at apple logo, Help?

    Hi, I had 3 user accounts, 1 which was hardly used. Well I was using the hardly used account a couple of weekends ago surfing the web and it suddenly froze & got the spinning beach ball. I tried to restart and it got stuck at the loading apple gray s

  • How to organize/configure email accounts on iMac

    I'm a brand new Mac user, and I really would appreciate some opinions on how to efficiently organize/configure my email accounts. -previously on Windows XP at home and work, I had an 'office email' address and and a family email address at home that

  • [Solved] After watching several youtube html5 720p videos, Firefox (version 33) display or screen turns black and aero transparency in windows 7 turns opaque.

    Hello ! I just want to share something familiar with that black display or screen occurs for some people. When I watch youtube videos, I used to watch them in html5 720p videos (not flash videos, https://www.youtube.com/html5 ). I upgraded firefox to

  • Animation Render Settings crash After Effects

    Hello all, We have a strange issue on one of our Mac Pros running After Effects (CS5). Whenever it renders with the Animation render settings, it beach balls and eventually freezes, unless you log out of the user and log back in (in rare occasions, i

  • Why am I getting these lines?

    Hello everyone. I have asked this before here and was helped out very well. I have followed the same steps I was told before which worked before but for some reason is not working now. Here is a clip of a Demo I made for a client but I keep getting t