Subject: Proposal: Track last-used timestamp for index usage

From: Raghav Mittal <[email-masked]>
Date: Wed, 1 Apr 2026 07:52:49 +0530

Hi all,

I’ve been exploring index usage statistics in PostgreSQL and noticed that
pg_stat_user_indexes only provides cumulative counters (idx_scan), but not
recency information.

Problem:
- Counters reset on restart or pg_stat_reset()
- No way to determine when an index was last used
- Makes it hard to safely identify unused indexes

Proposal:
Introduce lightweight tracking of last-used timestamp for indexes.

Possible approach:
- Mark index usage in executor (cheap signal)
- Background worker periodically updates last_used_at
- Avoids overhead in query execution path

Questions:
1. Has this problem been explored before?
2. Are there known concerns with adding timestamp tracking to stats?
3. Would this be acceptable as an extension vs core feature?

Happy to prototype this if there’s interest.

Thanks!

---

From: SATYANARAYANA NARLAPURAM <[email-masked]>
Date: Tue, 31 Mar 2026 19:50:26 -0700

Hi Raghav,

> Introduce lightweight tracking of last-used timestamp for indexes.

Could you elaborate the problem trying to solve here? As you mentioned
idx_scan already tracks the usage. Periodic snapshots should provide the
usage over a period of time. What is the purpose of exact timestamp?

Thanks,
Satya

---

From: Sami Imseih <[email-masked]>
Date: Tue, 31 Mar 2026 21:58:03 -0500

Hi,

> pg_stat_user_indexes only provides cumulative counters (idx_scan), but not

pg_stat_user_indexes.last_idx_scan and pg_stat_all_tableslast_seq_scan have been
around since v16. See [1]

Is that what you are looking for?

[1] [https://www.postgresql.org/docs/devel/monitoring-stats.html#MONITORING-PG-STAT-ALL-INDEXES-VIEW]

--
Sami Imseih
Amazon Web Services (AWS)