Skip to content

Instantly share code, notes, and snippets.

@checkaayush
Created March 21, 2022 14:53
Show Gist options
  • Save checkaayush/03502c353ebe15df334a17a9329c968c to your computer and use it in GitHub Desktop.
Save checkaayush/03502c353ebe15df334a17a9329c968c to your computer and use it in GitHub Desktop.
Get unused indexes in PostgreSQL
-- Source: https://www.cybertec-postgresql.com/en/get-rid-of-your-unused-indexes
SELECT s.schemaname,
s.relname AS tablename,
s.indexrelname AS indexname,
pg_relation_size(s.indexrelid) AS index_size
FROM pg_catalog.pg_stat_user_indexes s
JOIN pg_catalog.pg_index i ON s.indexrelid = i.indexrelid
WHERE s.idx_scan = 0 -- has never been scanned
AND 0 <>ALL (i.indkey) -- no index column is an expression
AND NOT i.indisunique -- is not a UNIQUE index
AND NOT EXISTS -- does not enforce a constraint
(SELECT 1 FROM pg_catalog.pg_constraint c
WHERE c.conindid = s.indexrelid)
ORDER BY pg_relation_size(s.indexrelid) DESC;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment