Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> tuff query, Needs to be faster.
I have the following query from a legacy sytem that needs to be sped up. I have tried dozens of different ways of writing the query, this is the fastest that I have found so far and it still takes around 30 seconds. Table d only has 2000 records, c about 700, and r about 900. If anyone could help me with this, I would appreciate it.
select d.mgrname,d.drdi,
sum(nvl(r.eng_jan,0) - nvl(c.eng_jan,0) + nvl(r.eng_feb,0) - nvl(c.eng_feb,0) + nvl(r.eng_mar,0) - nvl(c.eng_mar,0) + nvl(r.eng_apr,0) - nvl(c.eng_apr,0) + nvl(r.eng_may,0) - nvl(c.eng_may,0) + nvl(r.eng_jun,0) - nvl(c.eng_jun,0) + nvl(r.eng_jul,0) - nvl(c.eng_jul,0) + nvl(r.eng_aug,0) - nvl(c.eng_aug,0) + nvl(r.eng_sep,0) - nvl(c.eng_sep,0) + nvl(r.eng_oct,0) - nvl(c.eng_oct,0) + nvl(r.eng_nov,0) - nvl(c.eng_nov,0) + nvl(r.eng_dec,0) - nvl(c.eng_dec,0) ) total, sum(nvl(r.eng_jan,0) - nvl(c.eng_jan,0)) jan, sum(nvl(r.eng_feb,0) - nvl(c.eng_feb,0)) feb, sum(nvl(r.eng_mar,0) - nvl(c.eng_mar,0)) mar, sum(nvl(r.eng_apr,0) - nvl(c.eng_apr,0)) apr, sum(nvl(r.eng_may,0) - nvl(c.eng_may,0)) may, sum(nvl(r.eng_jun,0) - nvl(c.eng_jun,0)) jun, sum(nvl(r.eng_jul,0) - nvl(c.eng_jul,0)) jul, sum(nvl(r.eng_aug,0) - nvl(c.eng_aug,0)) aug, sum(nvl(r.eng_sep,0) - nvl(c.eng_sep,0)) sep, sum(nvl(r.eng_oct,0) - nvl(c.eng_oct,0)) oct, sum(nvl(r.eng_nov,0) - nvl(c.eng_nov,0)) nov, sum(nvl(r.eng_dec,0) - nvl(c.eng_dec,0)) decfrom r_pro r, c_pro c, pso_di_detail d
where r.rev_district (+) = c.cost_district and c.cost_district (+) = d.di and d.rdi = 'USA'
having sum(nvl(r.eng_jan,0) - nvl(c.eng_jan,0) + nvl(r.eng_feb,0) - nvl(c.eng_feb,0) + nvl(r.eng_mar,0) - nvl(c.eng_mar,0) + nvl(r.eng_apr,0) - nvl(c.eng_apr,0) + nvl(r.eng_may,0) - nvl(c.eng_may,0) + nvl(r.eng_jun,0) - nvl(c.eng_jun,0) + nvl(r.eng_jul,0) - nvl(c.eng_jul,0) + nvl(r.eng_aug,0) - nvl(c.eng_aug,0) + nvl(r.eng_sep,0) - nvl(c.eng_sep,0) + nvl(r.eng_oct,0) - nvl(c.eng_oct,0) + nvl(r.eng_nov,0) - nvl(c.eng_nov,0) + nvl(r.eng_dec,0) - nvl(c.eng_dec,0) ) != 0
Thanks
Michael Received on Tue Jun 03 1997 - 00:00:00 CDT
![]() |
![]() |