Pregunta

Según la información que pude encontrar, ambos resuelven los mismos problemas: operaciones más esotéricas como contención e intersección de matrices (&&, @>, <@, etc.).Sin embargo, me interesaría recibir consejos sobre cuándo usar uno u otro (o posiblemente ninguno).
El Documentación de PostgreSQL tiene alguna información sobre esto:

  • Las búsquedas de índice GIN son aproximadamente tres veces más rápidas que GiST
  • Los índices GIN tardan aproximadamente tres veces más en construirse que los GiST
  • Los índices GIN se actualizan aproximadamente diez veces más lentamente que GiST
  • Los índices GIN son de dos a tres veces más grandes que los GiST

Sin embargo, me interesaría especialmente saber si hay un impacto en el rendimiento cuando la relación entre la memoria y el tamaño del índice comienza a reducirse (es decir,¿El tamaño del índice se vuelve mucho mayor que la memoria disponible)?Me dijeron en el canal IRC #postgresql que GIN necesita mantener todo el índice en la memoria; de lo contrario, no será efectivo porque, a diferencia de B-Tree, no sabe qué parte leer del disco. una consulta en particular?La pregunta sería:¿Es esto cierto (porque también me han dicho lo contrario)?¿GiST tiene las mismas restricciones?¿Existen otras restricciones que debo tener en cuenta al utilizar uno de estos algoritmos de indexación?

¿Fue útil?

Solución

En primer lugar, ¿necesita utilizarlos para la indexación de búsquedas de texto?GIN y GiST son índices especializados para algunos tipos de datos.Si necesita indexar valores enteros o de caracteres simples, entonces el índice B-Tree normal es el mejor.
De todos modos, la documentación de PostgreSQL tiene un capítulo sobre ESENCIA y uno en GINEBRA, donde podrás encontrar más información.
Y, por último, pero no menos importante, la mejor manera de encontrar cuál es mejor es generar datos de muestra (tanto como sea necesario para ser un escenario real) y luego crear un índice GIST, midiendo cuánto tiempo se necesita para crear el índice. inserte un nuevo valor, ejecute una consulta de muestra.Luego suelte el índice y haga lo mismo con un índice GIN.Compara los valores y tendrás la respuesta que necesitas, en base a tus datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top