Nie sądzę, bym mógł to wyjaśnić lepiej niż to już robi instrukcja:
Wybierając typ indeksu, GiST lub GIN, weź pod uwagę następujące różnice w wydajności:
-
Wyszukiwanie indeksu GIN jest około trzy razy szybsze niż GiST
-
Tworzenie indeksów GIN trwa około trzy razy dłużej niż GiST
-
Indeksy GIN są aktualizowane umiarkowanie wolniej niż indeksy GiST, ale około 10 razy wolniej, jeśli obsługa szybkiej aktualizacji została wyłączona [...]
-
Indeksy GIN są dwa do trzech razy większe niż indeksy GiST
Link i cytat odnoszą się do instrukcji dla Postgresa 9.4. Szacunki dotyczące wielkości i wydajności wydawały się już nieco przestarzałe. Wraz z Postgresem 9.4 szanse znacznie się zmieniły na korzyść GIN .
Informacje o wydaniu Postgresa 9.4 obejmują:
Zmniejsz rozmiar indeksu GIN (Alexander Korotkov, Heikki Linnakangas) [...]
Popraw szybkość wyszukiwania GIN z wieloma klawiszami (Alexander Korotkov, HeikkiLinnakangas)
Szacunki dotyczące rozmiaru i wydajności zostały od tego czasu usunięte z instrukcji.
Pamiętaj, że istnieją specjalne przypadki użycia, które wymagają jednego lub drugiego.
Jedna rzecz, której nie zrozumiałeś:nigdy uzyskać błędne wyniki z indeksem GiST. Indeks operuje na wartościach skrótu, które może prowadzić do fałszywych alarmów w indeksie. Powinno to mieć znaczenie tylko w przypadku bardzo dużej liczby różnych słów w dokumentach. Fałszywe alarmy są eliminowane po ponownym sprawdzeniu rzeczywistego wiersza w każdym przypadku. Instrukcja:
Indeks GiST jest stratny, co oznacza, że indeks może generować fałszywe dopasowania i konieczne jest sprawdzenie rzeczywistego wiersza tabeli, aby wyeliminować takie fałszywe dopasowania. (PostgreSQL robi to automatycznie w razie potrzeby. )
Pogrubiony nacisk na moje.