À partir des informations que j'ai pu trouver, ils ont à la fois résoudre les mêmes problèmes - plus ésotérique des opérations comme la matrice de confinement et l'intersection (&&, @>, <@, etc.). Cependant, je serais intéressé par des conseils sur l'utilisation de l'un ou l'autre (ou l'autre peut-être).
La documentation PostgreSQL a quelques informations à ce sujet:
- GIN de la recherche d'index sont environ trois fois plus rapide que les GiST
- GIN indices de prendre environ trois fois plus de temps à construire que les GiST
- GIN indices sont environ dix fois plus lent à mettre à jour que les GiST
- GIN indices sont deux à trois fois plus grande que GiST
Cependant, je serais particulièrement intéressé de savoir si il y a un impact sur les performances lorsque la mémoire de la taille de l'index de la ration commence à faire des petits (ie. la taille de l'index devient beaucoup plus grand que la mémoire disponible)? J'ai été dit sur le #postgresql canal IRC GIN doit conserver tous les index en mémoire, sinon il ne sera pas efficace, parce que, contrairement à B-Arbre, il ne sait pas quel partie pour lire à partir du disque pour une requête particulière? La question serait: est-ce vrai (parce que j'ai aussi été dit à l'opposé de celle-ci)? Ne GiST ont les mêmes restrictions? Existe-il d'autres restrictions que je devrais être au courant de tout, à l'aide de l'un de ces algorithmes d'indexation?