Skip to content

Instantly share code, notes, and snippets.

@marcotc
Created June 18, 2018 21:35
Show Gist options
  • Save marcotc/289a52181c39755e91d2f77ccb9958ec to your computer and use it in GitHub Desktop.
Save marcotc/289a52181c39755e91d2f77ccb9958ec to your computer and use it in GitHub Desktop.
List Postgres indexes with ActiveRecord
ActiveRecord::Base.connection.exec_query("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, CASE WHEN indisunique THEN 'Y' ELSE 'N' END AS UNIQUE, 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 c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch, indexrelname, indisunique 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='public' ORDER BY 1,2;")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment