Nemyslím si, že bych to mohl vysvětlit lépe, než už to dělá příručka:
Při výběru typu indexu, který chcete použít, GiST nebo GIN, zvažte tyto rozdíly ve výkonu:
Vyhledávání indexů GIN je asi třikrát rychlejší než GiST
Vytváření indexů GIN trvá asi třikrát déle než GiST
Indexy GIN se aktualizují mírně pomaleji než indexy GiST, ale asi 10krát pomaleji, pokud byla zakázána podpora rychlých aktualizací [...]
Indexy GIN jsou dvakrát až třikrát větší než indexy GiST
Odkaz a citace naleznete v příručce pro Postgres 9.4. Odhady velikosti a výkonu se již zdály mírně zastaralé. S Postgres 9.4 se šance podstatně posunuly ve prospěch GIN .
Poznámky k vydání Postgres 9.4 zahrnují:
Snížit velikost indexu GIN (Alexander Korotkov, Heikki Linnakangas) [...]
Zlepšení rychlosti víceklíčového vyhledávání GIN (Alexander Korotkov, HeikkiLinnakangas)
Odhady velikosti a výkonu byly mezitím z manuálu odstraněny.
Všimněte si, že existují speciální případy použití, které vyžadují jedno nebo druhé.
Jednu věc jste špatně pochopili:nikdy získat špatné výsledky pomocí indexu GiST. Index pracuje s hodnotami hash, což může vést k falešně pozitivním výsledkům v indexu. To by mělo být relevantní pouze u velkého počtu různých slov ve vašich dokumentech. Falešné poplachy jsou v každém případě eliminovány po opětovné kontrole skutečného řádku. Manuál:
Index GiST je ztrátový, což znamená, že index může produkovat falešné shody a je nutné zkontrolovat skutečný řádek tabulky, aby se takové falešné shody eliminovaly. (PostgreSQL to dělá automaticky, když je potřeba. )
Tučné zdůraznění moje.