Pokud máte na mysli detekci „neplatných“ (špatně vytvořených) indexů, Postgres zjevně může „selhat“ při pokusu o vytvoření indexu, a pak je plánovač dotazů nepoužije, ačkoli ve vašem systému existují. Tento dotaz zjistí "neúspěšné" indexy:
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'
i když předpokládám, že detekce indexů tabulky TOAST by neuškodila, takže tuto část dotazu můžete odstranit :)
Související, pro mě někdy jen spuštění nové ANALYZE na tabulce také způsobí, že indexy se náhle začnou používat v produkci (tj. i když indexy nejsou „neplatné“, mohou být nepoužívané, dokud se nespustí ANALYZE). Divné.