Selon Craig Ringer :
Bien que ce soit généralement une bonne idée de créer un index sur (ou incluant) vos colonnes de clé étrangère côté référencement, ce n'est pas obligatoire. Chaque index que vous ajoutez ralentit légèrement les opérations DML, vous payez donc un coût de performance pour chaque
INSERT
,UPDATE
ouDELETE
. Si l'index est rarement utilisé, cela ne vaut peut-être pas la peine.
Comment déterminez-vous si l'avantage d'ajouter un indice dépasse son coût?
Profilez-vous les tests unitaires avant / après l'ajout d'un index et vérifiez-vous un gain de performance global? Ou existe-t-il une meilleure façon?
pg_stat_user_indexes
vous aide à le faire, en affichant des informations sur l'utilisation de l'index. Pour estimer les coûts de maintenance, vous pouvez consulter l'activité d'écriture de votre table,pg_stat_user_tables
mais en raison de HOT, toutes les mises à jour ne devront pas nécessairement toucher l'index, vous pourriez donc surestimer un peu.