【发布时间】:2021-11-22 02:34:06
【问题描述】:
我想收集有关 PostgreSQL 中索引的统计信息。
我找到了一种收集诸如索引扫描次数、索引大小等统计信息的方法。
这是一个查询:
SELECT
current_database() AS datname,
t.schemaname,
t.tablename,
psai.indexrelname AS index_name,
pg_relation_size(i.indexrelid) AS index_size,
CASE WHEN i.indisunique THEN 1 ELSE 0 END AS "unique",
psai.idx_scan AS number_of_scans,
psai.idx_tup_read AS tuples_read,
psai.idx_tup_fetch AS tuples_fetched
FROM
pg_tables t
LEFT JOIN pg_class c ON t.tablename = c.relname
LEFT JOIN pg_index i ON c.oid = i.indrelid
LEFT JOIN pg_stat_all_indexes psai ON i.indexrelid = psai.indexrelid
WHERE
t.schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY 1, 2;
但是,我没有看到如何收集索引的最后使用日期的方法。在 PostgreSQL 中可以吗?
【问题讨论】:
-
不,这是不可能的。 Postgres 不存储这些信息。
标签: sql postgresql indexing