Para una estimación muy rápida:
SELECT reltuples FROM pg_class WHERE relname = 'my_table';
Sin embargo, hay varias advertencias. Por un lado, relname
no es necesariamente único en pg_class
. Puede haber varias tablas con el mismo relname
en múltiples esquemas de la base de datos. Para ser inequívoco:
SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
Si no califica el esquema del nombre de la tabla, una conversión a regclass
observa la search_path
actual para elegir la mejor coincidencia. Y si la tabla no existe (o no se puede ver) en ninguno de los esquemas en search_path
recibe un mensaje de error. Ver Tipos de identificadores de objetos en el manual.
El elenco de bigint
formatea el real
número muy bien, especialmente para grandes conteos.
Además, reltuples
puede estar más o menos desactualizado. Hay maneras de compensar esto hasta cierto punto. Vea esta respuesta posterior con opciones nuevas y mejoradas:
- Forma rápida de descubrir el número de filas de una tabla en PostgreSQL
Y una consulta en pg_stat_user_tables
es muchas veces más lento (aunque todavía mucho más rápido que el conteo completo), ya que es una vista en un par de mesas.