Według Craiga Ringera :
Chociaż zwykle dobrym pomysłem jest utworzenie indeksu w kolumnach kluczy obcych po stronie odniesienia (lub w tym), nie jest to wymagane. Każdy indeks dodać spowalnia operacje DML lekko w dół, więc płacisz koszt wykonania na każdym
INSERT
,UPDATE
lubDELETE
. Jeśli indeks jest rzadko używany, nie warto go mieć.
Jak ustalić, czy korzyść z dodania indeksu przewyższa jego koszt?
Czy profilujesz testy jednostkowe przed / po dodaniu indeksu i sprawdzasz ogólny wzrost wydajności? Czy jest jakiś lepszy sposób?
pg_stat_user_indexes
pomaga w tym, pokazując informacje o użyciu indeksu. Aby oszacować koszty utrzymania, możesz sprawdzić aktywność zapisu w tabeli,pg_stat_user_tables
ale ze względu na HOT, nie wszystkie aktualizacje będą musiały dotknąć indeksu, więc możesz trochę przecenić.