Ich habe dieses Problem weiterhin: Ich habe 20 Indizes auf einer Tabelle, die ich fallen lassen muss, um Tests zu machen. Durch das Löschen der Tabelle werden nicht alle Metadaten gelöscht.
Es scheint keine Wildcard drop index ix_table_*
oder irgendeinen nützlichen Befehl zu geben. Es scheint einige Bash-Schleifen um psql zu geben, die du schreiben kannst.
Es muss etwas Besseres geben! Gedanken?
Angenommen, Sie möchten nur einfache Indizes löschen:
%Vor% Erreicht keine Indizes, die als Implementierungsdetails von Einschränkungen erstellt wurden ( UNIQUE
, PK
, EXCLUDE
).
Die Dokumentation:
%Vor%Das abhängige Objekt wurde als Teil der Erstellung des referenzierten Objekts erstellt Objekt, und ist wirklich nur ein Teil seiner internen Implementierung.
Sie könnten dies in eine Funktion für die wiederholte Ausführung einfügen.
Verwandt:
Beiseite: Dies ist ein Missverständnis:
Beim Löschen der Tabelle werden nicht alle Metadaten gelöscht.
Durch das Löschen einer Tabelle immer werden alle Indizes in der Tabelle durchsucht.
So entferne ich alle Indizes von Postgres, ausgenommen alle pkey.
%Vor%Um auszuführen:
%Vor%Bevor ich tatsächlich 'DROP INDEX xxx' ausführte, würde ich die Zeile 'EXECUTE ...' mit '-' auskommentieren und die Zeile 'RAISE INFO' auskommentieren, sie mit 'select func_name ();' und überprüfen Sie, dass ich nicht etwas fallen lasse, was ich nicht tun sollte.
Für unsere Anwendung haben wir alle Schemaanweisungen einschließlich der Erstellung von Indizes in einer Datei app.sql . Bevor dieses ganze Projekt in Produktion geht, wollen wir alle historisch erstellten Indizes bereinigen und sie dann neu erstellen mit:
%Vor%Hoffe, das hilft.
Tags und Links postgresql indexing metadata ddl dynamic-sql