Om du syftar på att upptäcka "ogiltiga" (dåligt skapade) index kan uppenbarligen Postgres "misslyckas" i ett försök att skapa ett index, och då kommer frågeplaneraren inte att använda dem, även om de finns i ditt system. Den här frågan kommer att upptäcka "misslyckade" index:
https://www.enterprisedb.com/blog/pgupgrade -bug-invalid-concurrently-created-indexes
SELECT n.nspname, c.relname
FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n,
pg_catalog.pg_index i
WHERE (i.indisvalid = false OR i.indisready = false) AND
i.indexrelid = c.oid AND c.relnamespace = n.oid AND
n.nspname != 'pg_catalog' AND
n.nspname != 'information_schema' AND
n.nspname != 'pg_toast'
även om jag antar att det inte skulle skada att upptäcka TOAST-tabellindex, så du kan ta bort den delen av frågan :)
Relaterat, för mig gör ibland bara att köra en ny ANALYS på ett bord att index plötsligt börjar användas i produktionen (dvs även om index inte är "ogiltiga" kan de vara oanvända tills en ANALYSE-körning). Konstigt.