jueves, 6 de octubre de 2016

Contar cantidad de registros en todas las tablas Postgresql

Varias veces he tenido que contar los registros de todas las tablas de una base en particular.
Dejo la consulta para poder hacerlo en postgresql


SELECT
nspname AS schemaname,relname,reltuples::integer
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
nspname NOT IN ('pg_catalog', 'information_schema') AND
relkind='r'
ORDER BY reltuples DESC;




3 comentarios:

Unknown dijo...

Estimado, tu query me ayudo bastante, pero tuve un problema con la cantidad de registros, ya que había realizado una migración de datos y no se veía reflejada la cantidad de registros con tu query. Esto se debe a que la consulta no se realiza en tiempo real, como lo es un count() por ejemplo.

Solución a esto, antes de ejecutar tu query, hay que reindexar la base de datos, para que actualice todos los valores y tener una respuesta de la cantidad de datos que existen hasta ese momento.

REINDEX DATABASE base_de_datos;

Saludos.

Néstor Lesna dijo...

Si es verdad, para que la consulta de bien debes de tener las estadísticas actualizadas, te dejo un post que dice como poder hacerlo no solo para que la consulta funcione bien, sino para que la base funcione mejor.
http://mistrucosinformaticos.blogspot.com.uy/2015/07/optimizacion-postgressql.html

jose levano arbizu dijo...

SELECT relname, n_tup_ins - n_tup_del as rowcount
FROM pg_stat_all_tables where schemaname = 'public' order by rowcount desc;

aqui dejo una query , espero ayude