defmodule EctoPSQLExtras.TableIndexesSize do @behaviour EctoPSQLExtras def info do %{ title: "Total size of all the indexes on each table, descending by size", index: 14, order_by: [index_size: :desc], columns: [ %{name: :schema, type: :string}, %{name: :table, type: :string}, %{name: :index_size, type: :bytes} ] } end def query(_args \\ []) do """ /* ECTO_PSQL_EXTRAS: Total size of all the indexes on each table, descending by size */ SELECT n.nspname AS schema, c.relname AS table, pg_indexes_size(c.oid) AS index_size FROM pg_class c LEFT JOIN pg_namespace n ON (n.oid = c.relnamespace) WHERE n.nspname NOT IN ('pg_catalog', 'information_schema') AND n.nspname !~ '^pg_toast' AND c.relkind IN ('r', 'm') ORDER BY pg_indexes_size(c.oid) DESC; """ end end