Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: Optimising the Query

Re: Optimising the Query

From: EscVector <Junk_at_webthere.com>
Date: 7 Nov 2006 08:44:29 -0800
Message-ID: <1162917869.350512.123520@i42g2000cwa.googlegroups.com>


Pre-build the sums in a matview.

pankaj_wolfhunter_at_yahoo.co.in wrote:
> Greetings,
>
> No of records in TABLE1 = 46697622
> No of records in TABLE2 = 9433275
> No of records in TABLE3 = 9576297
>
> SELECT TAB1.P_TDATE,
> FLOOR(TAB1.STIME/100) T_TIME,
> SUM (CASE WHEN TAB1.LIND <> 1
> AND (TAB2.CNAME NOT IN ('PN','AR')
> OR (NVL(TAB3.OMNI,0) <> 7)
> OR (TAB1.TIF <> 3))
> THEN 1
> ELSE 0
> END ) ORDPOSTMKT,
> SUM (CASE WHEN (TAB2.CNAME IN ('PN','AR')
> OR (TAB3.OMNI = 7)
> OR (TAB1.TIF = 3))
> THEN 1
> ELSE 0
> END ) ORDOARS
> FROM TABLE1 TAB1
> LEFT OUTER JOIN (
> ( SELECT ID,
> P_TDATE,
> SYMBOL,
> REFNUMBER,
> CNAME,
> ROW_NUMBER() OVER(PARTITION BY ID ORDER BY REFNUMBER) RANK
> FROM TABLE2
> ) TAB2
> JOIN (SELECT ID,
> P_TDATE,
> SYMBOL,
> OMNI,
> REFNUMBER,
> ROW_NUMBER() OVER(PARTITION BY ID ORDER BY REFNUMBER) RANK
> FROM TABLE3
> ) TAB3
> ON (
> TAB2.P_TDATE =
> TAB3.P_TDATE AND TAB2.SYMBOL =
> TAB3.SYMBOL
> AND TAB2.ID =
> TAB3.ID
> AND TAB2.REFNUMBER = TAB3.REFNUMBER
> AND TAB3.RANK = 1
> AND TAB2.RANK = 1)
> )
> ON (TAB1.P_TDATE =
> TAB3.P_TDATE
> AND TAB1.SYMBOL =
> TAB3.SYMBOL
> AND TAB1.ID =
> TAB3.ID)
> WHERE TAB1.OIND <> 0
> AND TAB1.OTYPE IN
> ('MR','GMR')
> GROUP BY TAB1.P_TDATE,
> FLOOR(TAB1.STIME/100)
> ORDER BY T_TIME
>
> Currently the query is taking 2+ hrs to execute.
>
> The query is taking records from TABLE2 and TABLE3 and LEFT OUTER JOIN
> with TABLE1.
> I know I am not giving much details abt each step and conditions used
> here but the query is
> running fine and just wanted to know whether the same query can be
> written
> in a more efficient manner.
>
> Any help would be appreciated.
>
> TIA
>
> DB version Info:
>
> Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
> PL/SQL Release 10.2.0.1.0 - Production
Received on Tue Nov 07 2006 - 10:44:29 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US