Comment puis-je supprimer tous les index d'une table dans Postgres?
Je continue à avoir ce problème: j'ai comme 20 index sur une table que j'ai besoin de tomber pour faire des tests. La suppression de la table n'a pas de chute de l'ensemble de ces métadonnées.
Il ne semble pas être un générique drop index ix_table_*
ou toute commande utile. Il semble y avoir certains bash boucles autour de psql vous pouvez écrire.
Il doit y avoir quelque chose de mieux! Pensées?
- stackoverflow.com/a/6777904/3961156
- Quand vous dites "tous les index", entendez-vous d'inclure les contraintes (
UNIQUE
,PK
,EXCLUDE
) qui sont mis en œuvre par la création d'un index implicitement? - Nope, juste l'index dans ce cas.
InformationsquelleAutor Erin | 2015-12-01
Vous devez vous connecter pour publier un commentaire.
En supposant que vous ne voulez baisse de la plaine d'indices:
Ne touche pas les index créés comme le détail de l'implémentation des contraintes (
UNIQUE
,PK
,EXCLUDE
).La documentation:
Vous pourriez conclure dans une fonction pour l'exécution répétée.
Connexes:
De côté: C'est un malentendu:
La suppression d'une table toujours cascades à tous les index de la table.
'tbl'
'your_table_name_here'
pour la rendre plus claire.where not indrelid::regclass::varchar like 'pg_%'
DROP INDEX
est uniquement autorisé pour le propriétaire de la table (ou les superutilisateurs) de toute façon.C'est comment j'ai supprimer tous les index de postgres, à l'exclusion de tous les pkey.
À exécuter:
Avant d'effectuer réellement 'DROP INDEX xxx', je voudrais commenter la ligne " EXÉCUTER ...' aide '-- ', et décommentez la "RELANCE de l'INFO en ligne", courir avec", sélectionnez func_name();' et vérifier que je ne suis pas en train de tomber quelque chose que je ne devrais pas.
Pour notre application, nous avons tous les schéma déclarations, y compris des indices de la création dans un fichier app.sql. Avant que ce projet va à la production, nous voulons nettoyer tous historiquement créé des index, puis les recréer à l'aide de:
Espère que cette aide.