On þri, 2007-03-27 at 16:13 +0530, Gauri Kanekar wrote: > > SELECT rs.id AS sid, rs.name AS sname, rc.id AS campid, rc.name AS > campname, rc.rev_type AS revtype, rc.act_type AS actntype, ra.id AS > advid, ra.name AS advname, rpt_chn.id AS chanid, rpt_chn.name AS > channame, rpt_cre.dn AS dn, SUM(rm.imdel) AS impression, SUM(rm.cdel) > AS click, rd.sqldate AS date FROM rm, rn CROSS JOIN rd, ra, rs, rc, > rpt_chn, rpt_cre WHERE rm.date_key = rd.key AND rm.net_key = rn.key > AND rm.adv_key = ra.key AND rm.camp_key = rc.key AND rm.s_key = rs.key > AND rm.chn_key = rpt_chn.key AND rm.cre_key = rpt_cre.key AND > ra.name != 'SYSTEM' AND rd.sqldate BETWEEN '12/1/2006' AND > '12/30/2006' AND ( rn.id IN ( 607 ) ) GROUP BY rd.sqldate , rs.id, > rs.name, ra.id, ra.name, rc.id, rc.name, rc.rev_type , rc.act_type, > rpt_chn.id, rpt_chn.name, rpt_cre.dn; you did not answer other questions, so do this: 1) VACUUM ANALYZE your database 2) set these in your postgresql.conf: enable_seqscan = true join_collapse_limit = 8 3) restart postgresql 4) do the EXPLAIN ANALYZE again, and send us it's output gnari