Wei Weng wrote:
> I have a table that has roughly 200,000 entries and many columns.
>
> The query is very simple:
>
> SELECT Field1, Field2, Field3... FieldN FROM TargetTable;
>
> TargetTable has an index that is Field1.
>
> The thing is on this machine with 1Gig Ram, the above query still takes
> about 20 seconds to finish. And I need it to run faster, ideally around
> 5 seconds.
>
-------------------------------------------------------------------------------------------------------------------------------------------
> Seq Scan on TargetTable (cost=0.00..28471.72 rows=210872 width=988)
> (actual time=0.037..6084.385 rows=211286 loops=1)
> Total runtime: 6520.499 ms
Thats 988 * 211286 =~ 200MB of data. Since the explain-analyse completes
in 6.5secs that would mean you're spending 13.5 seconds building the
result-set, transferring it and processing it at the client end.
That will take up at least 400MB of RAM (realistically more) - I'd
suggest you'd be better off with a cursor, unless you really need the
whole thing in one go.
If you do need all the data at once, you'll want a faster CPU and faster
RAM I guess.
--
Richard Huxton
Archonet Ltd