I have this query to get number of rows for the given filters, it takes too long time to get the result since db is too big, is there any way to optimise it i'm using postgresql 8.2
SELECT COUNT(1) as numrows from ( select lower(column1) as column1, column2, column3, column4, sum(column5) as column5, sum(column6) as column6
from table_name tablename
where column_date >= 'SOME DATE' and column_date < 'SOME DATE'
group by lower(column1) as column1, column2, column3, column4 ORDER BY column5 desc) allRows
Here is what i got with EXPLAIN Query
XN Aggregate (cost=849751.05..849751.05 rows=1 width=0)
-> XN Subquery Scan allrows (cost=805802.05..842426.22 rows=2929933 width=0)
-> XN HashAggregate (cost=805802.05..813126.89 rows=2929933 width=26)
-> XN Seq Scan on table_name tablename (cost=0.00..512808.79 rows=29299326 width=26)
Filter: ((column_date < 'SOME DATE'::date) AND (column_date >= 'SOME DATE'::date))