Esto es suponiendo que las vistas materializadas haber relpages >= 8
en pg_class
, que no tiene por qué ser el caso. En realidad puede estar vacío, aún no se ha completado, indicado por pg_class.relispopulated = FALSE
. El archivo de disco correspondiente tiene un tamaño cero en este caso.
Intenta en su lugar:
SELECT relname AS objectname
, relkind AS objecttype
, reltuples AS entries
, pg_size_pretty(pg_table_size(oid)) AS size -- depending - see below
FROM pg_class
WHERE relkind IN ('r', 'i', 'm')
ORDER BY pg_table_size(oid) DESC;
Donde los tipos disponibles son :
r
= tabla ordinaria,
i
= índice,
S
= secuencia,
v
= vista,
m
= vista materializada,
c
= tipo compuesto,
t
= tabla TOAST,
f
= tabla extranjera
Utilice una de las funciones de tamaño de objeto de la base de datos en lugar de crear la suya propia. Tenga en cuenta que el "tamaño de una tabla" se puede definir de diferentes maneras. Detalles: