Sir,

I am using the following psql query with union and subqueries in my project.



select a.areaname,f.fmno,fm.mno,f.aliasno as falias,f.salutation as
fsal,f.headname, fm.aliasno as fmalias,fm.salutation as fmsal,fm.membername,
extract (year from age(now(), to_date(fm.dob,'yyyy-MM-dd'))) as age,
fr1.year,sum(fr2.amount) as amt  from fmember fm left outer join fmreceipt2
fr2 on fm.mno=fr2.mno, fmreceipt1 fr1,prayerarea a,family f where fr2.mno in
(select fm2.mno from fmreceipt1 fm1,fmreceipt2 fm2 where fm1.refno =
fm2.refno and fr1.edate>='01-06-2010' and fr1.edate<='08-06-2010' group by
fm2.mno,fm1.year having (sum(fm2.amount)>=0 and sum(fm2.amount)<=1000)) and
a.areano=f.areano and fm.fmno=f.fmno and fm.dob<>'' and fr2.refno=fr1.refno
group by
a.areaname,f.fmno,fm.mno,f.aliasno,f.salutation,f.headname,fm.aliasno,
fm.salutation,fm.membername,fm.dob,fr1.year,fr1.edate having extract  (year
from age(now(), to_date(fm.dob,'yyyy-MM-dd')))>0 and fr1.edate>='01-06-2010'
and fr1.edate<='08-06-2010' union select a.areaname,f.fmno,fm.mno,f.aliasno
as falias,f.salutation as fsal, f.headname,fm.aliasno as
fmalias,fm.salutation as fmsal,fm.membername, extract (year from age(now(),
to_date(fm.dob,'yyyy-MM-dd'))) as age,0,0 from fmember fm,family
f,prayerarea a where fm.mno not in (select fm2.mno from fmreceipt2 fm2) and
f.fmno=fm.fmno and a.areano=f.areano and fm.dob<>'' group by
a.areaname,f.fmno,fm.mno,f.aliasno,f.salutation,f.headname,
fm.aliasno,fm.salutation,fm.membername,fm.dob having extract  (year from
age(now(), to_date(fm.dob,'yyyy-MM-dd')))>0 order by 1,2,3,11


When I run this query it takes 1 minute to give result but in the receipt1
table contains  4000 records only.
I want to know what is the problem? Is there any mistake in the query?

Kindly clarify.

Thanks
Gloier

Reply via email to