「無効な」(作成が不十分な)インデックスの検出について言及している場合、Postgresはインデックスを作成しようとして「失敗」する可能性があり、クエリプランナーはそれらをシステムに存在していても使用しません。このクエリは「失敗した」インデックスを検出します:
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'
TOASTテーブルのインデックスを検出しても問題はないと思いますが、クエリのその部分を削除できます:)
関連して、私にとっては、テーブルで新しいANALYZEを実行するだけで、インデックスが突然本番環境で使用され始めることがあります(つまり、インデックスが「無効」でなくても、ANALYZEが実行されるまで使用されない場合があります)。奇妙な。