No creo que pueda explicarlo mejor de lo que ya lo hace el manual:
Al elegir qué tipo de índice utilizar, GiST o GIN, tenga en cuenta estas diferencias de rendimiento:
-
Las búsquedas en el índice GIN son unas tres veces más rápidas que en GiST
-
Los índices GIN tardan aproximadamente tres veces más en construirse que GiST
-
Los índices GIN son moderadamente más lentos para actualizar que los índices GiST, pero aproximadamente 10 veces más lentos si se deshabilitó el soporte de actualización rápida [...]
-
Los índices GIN son dos o tres veces más grandes que los índices GiST
El enlace y la cotización se refieren al manual de Postgres 9.4. Las estimaciones de tamaño y rendimiento ya parecían un poco desactualizadas. Con Postgres 9.4, las probabilidades han cambiado sustancialmente a favor de GIN .
Las notas de la versión de Postgres 9.4 incluyen:
-
Reducir el tamaño del índice GIN (Alexander Korotkov, Heikki Linnakangas) [...]
-
Mejore la velocidad de las búsquedas GIN de múltiples claves (Alexander Korotkov, HeikkiLinnakangas)
Desde entonces, las estimaciones de tamaño y rendimiento se han eliminado del manual.
Tenga en cuenta que hay casos de uso especiales que requieren uno u otro.
Una cosa que malinterpretaste:nunca obtener resultados incorrectos con un índice GiST. El índice opera con valores hash, que pueden dar lugar a falsos positivos en el índice. Esto solo debería volverse relevante con una gran cantidad de palabras diferentes en sus documentos. Los falsos positivos se eliminan después de volver a verificar la fila real en cualquier caso. El manual:
Un índice GiST tiene pérdidas, lo que significa que el índice puede producir coincidencias falsas, y es necesario verificar la fila de la tabla real para eliminar dichas coincidencias falsas. (PostgreSQL hace esto automáticamente cuando es necesario. )
Énfasis en negrita mío.