We are running this query on a DB2 database and are wondering if there is anything which can be done to make it run faster?
with temp(id,desk,CUR_MTD_TOTAL, WTD, CUR_FY_YTD, PRV_MTD_TOTAL, PRV_BUS_DAY,PRV_DAY_AVG, PRV_WEEK_AVG,PRV_MONTH_AVG, PRV_FY_YTD,CUR_REV_ANN,PRV_FY,FORECAST,TOTAL_YTD_ACCRUED, NEXT_PLAN_PRIM,NEXT_PLAN_SECDY,NEXT_PLAN) as (
select rootoe.row_id,rootoe.name as desk, sum(prev.CUR_MTD_TOTAL), sum(prev.WTD), sum(prev.CUR_FY_REV), sum(prev.PRV_MTD_TOTAL) , sum(prev.PRV_BUS_DAY) , sum(prev.DAILY_AVG) ,sum(prev.WEEKLY_AVG) ,sum(prev.PRV_MONTH_AVG) ,sum(prev.PRV_YTD_REV) ,sum(prev.PRV_FY_REV),sum(prev.CUR_FY_ANN_REV),0,0,0,0,0
from cx_matrix_pos tr
inner join cx_revenue prev on prev.postn_id=tr.child_pos
inner join s_org_ext oe on oe.row_id=prev.oe_id
inner join s_postn postn on postn.row_id=tr.child_pos
inner join s_org_ext rootoe on rootoe.row_id=oe.frght_terms_cd
where tr.parent_pos='1-156J4' and oe.FRGHT_TERMS_INFO like 'Investment Advisor' and Ucase(rootoe.name) like '%'
group by rootoe.row_id,rootoe.name
union all
select rootoe.row_id,rootoe.name as desk, 0,0,0,0,0,0,0,0,0,0,0,sum(bu.forecast),sum(bu.total_ytd_accrued),0,0,0
from cx_matrix_pos tr
inner join cx_forecast_fy bu on bu.position_id=tr.child_pos
inner join cx_fiscal_year fy on fy.fiscal_year=bu.fiscal_year
inner join s_postn postn on postn.row_id=tr.child_pos
inner join s_org_ext oe on oe.row_id=bu.ou_id
inner join s_org_ext rootoe on rootoe.row_id=oe.frght_terms_cd
where tr.parent_pos='1-156J4' and oe.FRGHT_TERMS_INFO like 'Investment Advisor' and Ucase(rootoe.name) like '%'
group by rootoe.row_id,rootoe.name
union all
select rootoe.row_id,rootoe.name as desk, 0,0,0,0,0,0,0,0,0,0,0,0,0,sum(bu.ni_forecast),sum(bu.sec_forecast),sum(bu.forecast)
from cx_matrix_pos tr
inner join cx_forecast bu on bu.position_id=tr.child_pos
inner join s_period per on per.row_id=bu.period_id
inner join s_postn postn on postn.row_id=tr.child_pos
inner join s_org_ext oe on oe.row_id=bu.ou_id
inner join s_org_ext rootoe on rootoe.row_id=oe.frght_terms_cd
where tr.parent_pos='1-156J4' and oe.FRGHT_TERMS_INFO like 'Investment Advisor' and Ucase(rootoe.name) like '%'
and per.desc_text='Fiscal Year 2005'
group by rootoe.row_id,rootoe.name
)
select id,desk, cast(sum(CUR_MTD_TOTAL) as double) as Cur_Month, cast(sum(FORECAST) as double) as Cur_Plan_FY, cast(sum(TOTAL_YTD_ACCRUED) as double) as Cur_Plan_YTD, cast(sum(WTD) as double) as Cur_Week,cast(sum(CUR_FY_YTD) as double) as Cur_YTD, cast(sum(PRV_MTD_TOTAL) as double) as Prv_Month, cast(sum(PRV_BUS_DAY) as double) as Prv_Day,cast(sum(PRV_DAY_AVG) as double) as Prv_Day_Avg, cast(sum(PRV_WEEK_AVG) as double) as Prv_Week_Avg, cast(sum(PRV_MONTH_AVG) as double) as Prv_Month_Avg,cast(sum(PRV_FY_YTD) as double) as Prv_YTD ,cast(sum(PRV_FY) as double) as Prv_FY, cast(sum(CUR_REV_ANN) as double) as Cur_Rev_Ann,cast(sum(NEXT_PLAN_PRIM) as double) as Next_Plan_Prim, cast(sum(NEXT_PLAN_SECDY) as double) as Next_Plan_Secdy,cast(sum(NEXT_PLAN) as double) as Next_Plan from temp group by id,desk order by Cur_Ytd desc
by: jltoopsPosted on 2004-09-24 at 07:32:06ID: 12143585
Ideas ..
a) looks like this would make a nice View ...
b) Remove/Replace Ucase(rootoe.name) like '%'
with somthing like rootoe.name <> ''
c) Create a SP to do this... and Run it every so often and cache the results in a table
Questions
a) how long does it take
b) how many rows does it return
c) what are the tables involved and
d) example of what it returns.
Jay
ps... THATS one fat harry monster of a query u have there