sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvad er de tilgængelige muligheder for at identificere og fjerne de ugyldige objekter i Postgres (f.eks.:beskadigede indekser)

Hvis du henviser til at detektere "ugyldige" (dårligt oprettede) indekser, kan Postgres tilsyneladende "fejle" i et forsøg på at oprette et indeks, og så vil forespørgselsplanlæggeren ikke bruge dem, selvom de findes i dit system. Denne forespørgsel vil opdage "mislykkede" indekser:

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'

selvom jeg formoder, at opdagelse af TOAST-tabelindekser ikke ville skade, så du kan fjerne den del af forespørgslen :)

Beslægtet, for mig gør nogle gange bare at køre en ny ANALYSE på et bord også, at indekser pludselig begynder at blive brugt i produktionen (dvs. selvom indekser ikke er "ugyldige", kan de være ubrugte indtil en ANALYSE-kørsel). Underligt.



  1. Hvad er rækkefølgen af ​​poster i en tabel med en sammensat primærnøgle

  2. C#-fejl ORA 00907:Manglende højre parentes

  3. Importer dataene fra XML-filerne til en MySQL-database

  4. hvordan man slipper kolonne fra tabel, hvis den findes