Sobes.tech
Middle

Quels sont les types d'index dans PostgreSQL?

sobes.tech IA

Réponse de l'IA

Il existe les principaux types d’index suivants :

  1. B-tree (arbre B) - le type le plus courant, adapté à la plupart des requêtes typiques (égalité, comparaison, plage). Basé sur un arbre équilibré.

  2. Hash (hachage) - utilisé pour vérifier l’égalité (=). Plus rapide que le B-tree pour ces requêtes, mais ne supporte pas les comparaisons ni les plages. Stocke la valeur de hachage de la clé et un pointeur vers la ligne.

  3. GiST (Arbre de recherche généralisé) - structure d’arbre de recherche généralisée permettant de construire différents index pour des types de données complexes (géométriques, textuels avec recherche en texte intégral). Basé sur un arbre équilibré.

  4. SP-GiST (Arbre de recherche généralisé partitionné par espace) - version spécialisée de GiST pour des données pouvant être divisées par espace (par exemple, points, rectangles). Exemples : arbres k-d, quadtrees.

  5. GIN (Index inversé généralisé) - index inversé généralisé, principalement pour rechercher des éléments à l’intérieur de valeurs composées (par exemple, tableaux, JSONB). Fréquemment utilisé pour la recherche en texte intégral.

  6. BRIN (Index de plage de blocs) - index de plage de blocs. Convient pour de très grandes tables avec des données naturellement ordonnées (par exemple, par temps). Indexe la plage de valeurs dans les blocs physiques du disque.

  7. Bloom (Filtre de Bloom) - ce n’est pas un index traditionnel, mais une structure de données probabiliste pour vérifier rapidement l’absence d’un élément. Utilisé pour accélérer la sélection dans de très grandes tables, lorsque la correspondance exacte n’est pas nécessaire ou comme filtre supplémentaire avant de scanner l’index principal.

Exemples d’utilisation :

  • B-tree : index sur des champs numériques, des dates, des chaînes pour la recherche par plage (WHERE amount > 100).
  • Hash : rarement utilisé directement, car le B-tree est généralement plus rapide pour la plupart des tâches.
  • GiST : index géospatiaux (gist(location)), index pour la recherche en texte intégral (to_tsvector).
  • SP-GiST : index pour des données bidimensionnelles (spgist(point)).
  • GIN : index pour des tableaux (gin(tags)), JSONB (gin(data)), recherche en texte intégral.
  • BRIN : index sur le champ timestamp dans les tables de logs, où les données sont ordonnées par le temps.
  • Bloom : index sur un ensemble de colonnes (bloom(col1, col2, col3)) pour exclure rapidement les lignes où la combinaison de valeurs n’est pas présente.

Le choix du type d’index dépend du type de données de la colonne et du type de requêtes à optimiser.