# Documentation Django 6.0.7

# Index de modèles spécifiques à PostgreSQL

Les éléments suivants sont des index spécifiques à PostgreSQL disponibles dans le module `django.contrib.postgres.indexes`.

## `BloomIndex`

class BloomIndex(*expressions, length=None, columns=(), **options)

  Crée un index bloom.

  Pour utiliser cet index, vous devez activer l’extension bloom dans PostgreSQL. Vous pouvez l’installer en utilisant l’opération de migration `BloomExtension`.

  Indiquez un nombre entier de bits de 1 à 4096 dans le paramètre `length` pour indiquer la longueur de chaque entrée d’index. La valeur par défaut dans PostgreSQL est 80.

  Le paramètre `columns` accepte un tuple ou une liste jusqu’à 32 valeurs de nombres entiers de bits de 1 à 4095.

## `BrinIndex`

class BrinIndex(*expressions, autosummarize=None, pages_per_range=None, **options)

  Créé un index BRIN.

  Définissez le paramètre `autosummarize` à `True` pour activer le résumé automatique appliqué par autovacuum.

  Le paramètre `pages_per_range` accepte un nombre entier positif.

## `BTreeIndex`

class BTreeIndex(*expressions, fillfactor=None, deduplicate_items=None, **options)

  Crée un index B-Tree.

  Indiquez un nombre entier entre 10 et 100 pour le paramètre fillfactor afin d’ajuster la compression des pages d’index. La valeur par défaut de PostgreSQL est de 90.

  Fournissez une valeur booléenne au paramètre ``deduplicate_items``_ pour contrôler l’activation de la déduplication. PostgreSQL l’active par défaut.

## `GinIndex`

class GinIndex(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)

  Créé un index gin.

  Pour utiliser cet index sur des types de données ne figurant pas dans les classes d’opérateurs intégrés, vous devez activer l’extension btree_gin dans PostgreSQL. Vous pouvez installer l’extension par une opération de migration `BtreeGinExtension`.

  Définissez le paramètre `fastupdate` à `False` pour désactiver la technique de mise à jour GIN rapide qui est activée par défaut dans PostgreSQL.

  Indiquez un nombre entier de kilooctets dans le paramètre gin_pending_list_limit pour ajuster la taille maximale de la liste d’attente GIN qui est utilisée lorsque `fastupdate` est activé.

## `GistIndex`

class GistIndex(*expressions, buffering=None, fillfactor=None, **options)

  Crée un index GiST. Ces index sont automatiquement créés pour les champs spatiaux ayant `spatial_index=True`. Ils sont également utiles pour d’autres types, tels que `HStoreField` ou les champs d’intervalle.

  Pour utiliser cet index sur des types de données ne figurant pas dans les classes d’opérateurs gist intégrées, vous devez activer l’extension btree_gist dans PostgreSQL. Vous pouvez installer l’extension par une opération de migration `BtreeGistExtension`.

  Définissez le paramètre `buffering` à `True` ou `False` pour activer ou désactiver manuellement la construction avec tampon de l’index.

  Indiquez un nombre entier entre 10 et 100 pour le paramètre fillfactor afin d’ajuster la compression des pages d’index. La valeur par défaut de PostgreSQL est de 90.

## `HashIndex`

class HashIndex(*expressions, fillfactor=None, **options)

  Crée un index hash.

  Indiquez un nombre entier entre 10 et 100 pour le paramètre fillfactor afin d’ajuster la compression des pages d’index. La valeur par défaut de PostgreSQL est de 90.

## `SpGistIndex`

class SpGistIndex(*expressions, fillfactor=None, **options)

  Créé un index SP-GiST.

  Indiquez un nombre entier entre 10 et 100 pour le paramètre fillfactor afin d’ajuster la compression des pages d’index. La valeur par défaut de PostgreSQL est de 90.

## Expressions `OpClass()`

class OpClass(expression, name)

  Une expression `OpClass()` représente l”`expression` avec une classe d’opérateur personnalisée permettant de définir des index fonctionnels, des contraintes d’unicité fonctionnelles ou des contraintes d’exclusion. Pour l’utiliser, vous devez ajouter `'django.contrib.postgres'` dans votre réglage `INSTALLED_APPS`. Définissez le paramètre `name` au nom de la `classe d'opérateur`_.

  Par exemple :

      Index(
          OpClass(Lower("username"), name="varchar_pattern_ops"),
          name="lower_username_idx",
      )

  crée un index sur `Lower('username')` en utilisant `varchar_pattern_ops`.

      UniqueConstraint(
          OpClass(Upper("description"), name="text_pattern_ops"),
          name="upper_description_unique",
      )

  crée un contrainte d’unicité sur `Upper('description')` en utilisant `text_pattern_ops`.

      ExclusionConstraint(
          name="exclude_overlapping_ops",
          expressions=[
              (OpClass("circle", name="circle_ops"), RangeOperators.OVERLAPS),
          ],
      )

  crée une contrainte d’exclusion sur `circle` en utilisant `circle_ops`.