From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Rural Hunter <ruralhunter(at)gmail(dot)com> |
Cc: | pgsql-admin(at)postgresql(dot)org |
Subject: | Re: wrong count estimation in query plan |
Date: | 2014-10-30 14:25:57 |
Message-ID: | 19884.1414679157@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
Rural Hunter <ruralhunter(at)gmail(dot)com> writes:
> My question is, why I had to run analyze so many times to make the
> estimation be close with the actual count?
If ANALYZE doesn't scan the entire table then it updates the rowcount
estimate using a moving-average approach, rather than assuming that
the blocks it did look at are necessarily completely representative.
That causes the estimate to converge over multiple passes. Since
it took so many cycles to get close to reality, we can conclude that
the table is several times larger than the number of blocks ANALYZE
is willing to sample ... which, for a table with only 1000 rows in
it, says you've got a bad table-bloat problem. VACUUM FULL or CLUSTER
might be indicated.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Rural Hunter | 2014-10-31 13:33:08 | Re: wrong count estimation in query plan |
Previous Message | Rural Hunter | 2014-10-30 07:17:30 | wrong count estimation in query plan |