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
.
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.
QUERY PLAN
---------------------------------------------------------------------------------------------------------
Aggregate (cost=4.50..4.51 rows=1 width=0) (actual time=0.882..0.884 rows=1 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
):
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.