Saludos.

Estaba tratando de encontrar todos los índices que menos se usan en una base de datos, y traté de usar una consulta que tenía acá, descrita por Josh Berkus en su post "Finding Useless Indexes" pero por lo que veo era para versiones viejas de PostgreSQL. Ésta es la consulta original:

 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.

¿Tienen alguna idea de cómo poder modificar esta consulta para PostgreSQL 9.1?

Exactamente:

SELECT version();
version
------------------------------------------------------------------------------------------------------------
PostgreSQL 9.1.7 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
(1 row)



Responder a