Aller au contenu

Les index GIN et GIST et la recherche plein texte

Les deux index qui permettent d’accélérer les recherches plein texte sont donc GIN et GiST.

Voici les syntaxes de création de ces index:

  • pour GiST, où colonne est de type tsvector ou tsquery :

    CREATE INDEX nom ON table USING gist(colonne);
    

  • pour GIN, où colonne est de type tsvector :

    CREATE INDEX nom ON table USING gin(colonne);
    

Parmis les différences entre ces deux méthodes d’indexation, on peut dire que :

  • les recherches par l’index GIN est trois fois plus rapide que par GiST ;
  • les index GIN prennent trois fois plus de temps à se construire que les index GiST. Sur une volumétrie très conséquente, cela pourrait représenter plusieurs jours d’indexation ;
  • les index GIN sont plus lents à mettre à jour que les index GiST ;
  • les index GIN sont entre deux et trois fois plus gros que les index GiST.

En conclusion, la méthode d’indexation GIN est idéale lorsque les données sont statiques. Si on doit indexer des données “plein texte” dynamiques, la préférence ira alors à GiST.