Marcos Ortiz escribió:

>  SELECT idstat.relname AS table_name,
>               indexrelname AS index_name,
>               idstat.idx_scan AS times_used,
>               pg_size_pretty(pg_relation_size(idstat.relname)) AS
> table_size,
>               pg_size_pretty(pg_relation_size(indexrelname)) AS
> index_size,
>               n_tup_upd + n_tup_ins + n_tup_del AS num_writes,
>               indexdef AS definition
> FROM pg_stat_user_indexes AS idstat
> JOIN pg_indexes ON indexrelname = indexname
> JOIN pg_stat_user_tables AS tabstat ON idstat.relname = tabstat.relname
> WHERE idstat.idx_scan < 200
> AND indexdef !~* 'unique'
> ORDER BY idstat.relname, indexrelname;
> 
> Pero por lo que veo, en las versiones actuales de PostgreSQL,
> pg_size_pretty usa el OID ahora para poder obtener el tamaño de
> alguna relación.

Usa pg_relation_size(idstat.relid::regclass) en el primer caso, y
idstat.indexrelid::regclass en el segundo.

Usar el "relname" es una idea bien mala (podría tomar una tabla o índice
equivocado, si hay dos con el mismo nombre en distintos esquemas).
Recomendaría usar esto en todas las versiones, incluyendo anteriores a
9.1.

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a