reltuples < # of rows

Started by Eric Brownabout 21 years ago2 messagesgeneral
Jump to latest
#1Eric Brown
eric.brown@propel.com

I thought that the number of tuples in a table must be greater than the
number of rows? For one of my tables, I have the following:
# analyze t_stats;
ANALYZE
siteserverdb=# select reltuples, relpages from pg_class where relname =
't_stats';
reltuples | relpages
-----------+----------
1760 | 21119
(1 row)

siteserverdb=# select count(*) from t_stats;
count
-------
1861
(1 row)

How is this possible?

I'm running postgres 8.0 on a redhat ws3. Clearly I'm not vacuuming
enough, but that seems to be a separate issue to me. Am I seeing data
corruption?

Thanks,
Eric

Eric Brown
408-571-6341
www.propel.com

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Eric Brown (#1)
Re: reltuples < # of rows

Eric Brown <eric.brown@propel.com> writes:

I thought that the number of tuples in a table must be greater than the
number of rows? For one of my tables, I have the following:
# analyze t_stats;
ANALYZE
siteserverdb=# select reltuples, relpages from pg_class where relname =
't_stats';
reltuples | relpages
-----------+----------
1760 | 21119
(1 row)

siteserverdb=# select count(*) from t_stats;
count
-------
1861
(1 row)

How is this possible?

ANALYZE produces only an estimated reltuples. To be exact it would have
to scan the entire table.

regards, tom lane