Skip to content

Instantly share code, notes, and snippets.

@timglabisch
Created October 25, 2012 14:32
Show Gist options
  • Save timglabisch/3952878 to your computer and use it in GitHub Desktop.
Save timglabisch/3952878 to your computer and use it in GitHub Desktop.
Postgre Sql Indizes Required Size
SET search_path TO ic,public;
SELECT pg_size_pretty(sum(index_size_raw)::bigint) FROM (
SELECT
t.tablename,
indexname,
c.reltuples AS num_rows,
pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size,
pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size,
pg_relation_size(quote_ident(indexrelname)::text) as index_size_raw,
idx_scan AS number_of_scans,
idx_tup_read AS tuples_read,
idx_tup_fetch AS tuples_fetched
FROM pg_tables t
LEFT OUTER JOIN pg_class c ON t.tablename=c.relname
LEFT OUTER JOIN
(SELECT indrelid,
max(CAST(indisunique AS integer)) AS is_unique
FROM pg_index
GROUP BY indrelid) x
ON c.oid = x.indrelid
LEFT OUTER JOIN
( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch,indexrelname FROM pg_index x
JOIN pg_class c ON c.oid = x.indrelid
JOIN pg_class ipg ON ipg.oid = x.indexrelid
JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid )
AS foo
ON t.tablename = foo.ctablename
WHERE t.schemaname='ic'
ORDER BY 1,2
) as t
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment