sql >> Base de Datos >  >> RDS >> PostgreSQL

Diferencia entre el índice GiST y GIN

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.