Wie kann ich das löschen aller Indizes einer Tabelle in der Postgres?
Ich immer wieder dieses problem: ich habe wie 20 Indizes auf einer Tabelle, die ich brauche um zu fallen, um zu testen wollen. Drop die Tabelle nicht löschen Sie alle von dieser Metadaten.
Scheint es nicht zu sein, eine wildcard drop index ix_table_*
oder irgendwelche nützlichen Befehl. Es scheinen sich einige bash-Schleifen rund um psql können Sie schreiben.
Es muss etwas besser! Gedanken?
- stackoverflow.com/a/6777904/3961156
- Wenn Sie sagen "alle Indizes", meinst du zu gehören Einschränkungen (
UNIQUE
,PK
,EXCLUDE
), die implementiert werden, indem eine index implizit? - Nee, nur die Indizes in diesem Fall.
InformationsquelleAutor Erin | 2015-12-01
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, dass Sie nur wollen, um die drop-plain Indizes:
Nicht berühren Indizes erstellt, die als detail von Einschränkungen (
UNIQUE
,PK
,EXCLUDE
).Die Dokumentation:
Könnten Sie wickeln diese in eine Funktion für die wiederholte Ausführung.
Related:
Beiseite: Das ist ein Missverständnis:
Löschen einer Tabelle immer Kaskaden, um alle Indizes auf der Tabelle.
'tbl'
'your_table_name_here'
deutlicher machen.where not indrelid::regclass::varchar like 'pg_%'
DROP INDEX
darf nur für den Eigentümer der Tabelle (oder Superuser) sowieso.Dies ist, wie Entferne ich alle Indizes von postgres, ohne pkey.
Ausführen:
Bevor Sie Sie tatsächlich ausführen 'DROP INDEX xxx', ich würde kommentieren Sie die Zeile 'AUSFÜHREN ...' mit '-- ', und kommentieren Sie den "ERHÖHEN" INFO " - Zeile laufen Sie mit 'wählen Sie func_name();' und überprüfen Sie, bin ich nicht löschen, etwas, was ich nicht sollte.
Für unsere Anwendung haben wir alle schema-Anweisungen einschließlich der Erstellung von Indizes in einer Datei app.sql. Bevor dieses ganze Projekt geht in die Produktion, die wir wollen, zu bereinigen, alle historisch erstellt Indizes neu erstellen mit:
Hoffe, das hilft.