Como suelo olvidar con facilidad ciertas cosas y al no usar mucho del.icio.us para recordarlas, pongo aquí un artículo que encontré hace unos días por si alguien más le encuentra utilidad. ;)

En cualquier gestor de base de datos, para conocer el número de registros basta con hacer uso de la función de agregación count.

SELECT count(*) FROM tabla;

Pero hacer esta operación en PostgreSQL sobre tablas grandes es bastante costosa porque se realiza un recorrido secuencial para obtener el número exacto de registros.

test=> EXPLAIN ANALYZE SELECT COUNT(*) FROM actor;
                                               QUERY PLAN
---------------------------------------------------------------------------------------------------------
 Aggregate  (cost=4.50..4.51 rows=1 width=0) (actual time=0.882..0.884 rows=1 loops=1)
   ->  Seq Scan on actor  (cost=0.00..4.00 rows=200 width=0) (actual time=0.011..0.432 rows=200 loops=1)
 Total runtime: 0.963 ms
(3 filas)

Una forma de obtener el número aproximado de registros de manera rápida y sin los problemas inherentes al uso de la función count, es haciendo una consulta a los catálogos del sistema (pg_class):

SELECT reltuples FROM pg_class
   JOIN pg_namespace ON (pg_class.relnamespace = pg_namespace.oid)
WHERE nspname = 'public' -- esquema
AND relname = 'actor'; -- nombre de la tabla

Para que lo anterior funcione o dé resultados más cercanos a la realidad, es necesario ejecutar ANALYZE sobre esa tabla, tarea que se debe realizar periódicamente.