David Blasby <dblasby@refractions.net> writes:
> I have another copy of this table in another database - vacuum analyse
> verbose says its "only" 1,500,000 pages (vs 2,800,000).
Hmm ... this is consistent with the idea that you did an UPDATE
affecting every row of the table. That would generate N new rows which
would all get added to the end of the table, if there were no dead space
available within the table. After commit you have a lot of pages worth
of dead tuples followed by a lot of pages worth of live tuples. Plain
VACUUM cannot do much to fix this since it doesn't move rows around.
VACUUM FULL will fix it, but its index-update overhead is high enough
that CLUSTER is a better deal.
See followup message discussing ALTER TABLE as another alternative.
regards, tom lane