---
title: "Index de modèles spécifiques à PostgreSQL"
version: 4.2
locale: fr
source: https://docs.djangoproject.com/fr/4.2/ref/contrib/postgres/indexes/
canonical: https://djangodocs.dev/fr/4.2/ref/contrib/postgres/indexes/
---
# Index de modèles spécifiques à PostgreSQL

Les éléments suivants sont des [index](/fr/4.2/ref/models/indexes/) spécifiques à PostgreSQL disponibles dans le module `django.contrib.postgres.indexes`.

## `BloomIndex`

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

Crée un index [bloom](https://www.postgresql.org/docs/current/bloom.html).

Pour utiliser cet index, vous devez activer l’extension [bloom](https://www.postgresql.org/docs/current/bloom.html) dans PostgreSQL. Vous pouvez l’installer en utilisant l’opération de migration [`BloomExtension`](/fr/4.2/ref/contrib/postgres/operations/#django.contrib.postgres.operations.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](https://www.postgresql.org/docs/current/brin-intro.html).

Définissez le paramètre `autosummarize` à `True` pour activer le [résumé automatique](https://www.postgresql.org/docs/current/brin-intro.html#BRIN-OPERATION) appliqué par autovacuum.

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

## `BTreeIndex`

#### `class BTreeIndex(*expressions, fillfactor=None, **options)`

Crée un index B-Tree.

Indiquez un nombre entier entre 10 et 100 pour le paramètre [fillfactor](https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS) afin d’ajuster la compression des pages d’index. La valeur par défaut de PostgreSQL est de 90.

## `GinIndex`

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

Créé un [index gin](https://www.postgresql.org/docs/current/gin.html).

Pour utiliser cet index sur des types de données ne figurant pas dans les [classes d’opérateurs intégrés](https://www.postgresql.org/docs/current/gin-builtin-opclasses.html), vous devez activer [l’extension btree\_gin](https://www.postgresql.org/docs/current/btree-gin.html) dans PostgreSQL. Vous pouvez installer l’extension par une opération de migration [`BtreeGinExtension`](/fr/4.2/ref/contrib/postgres/operations/#django.contrib.postgres.operations.BtreeGinExtension).

Définissez le paramètre `fastupdate` à `False` pour désactiver la [technique de mise à jour GIN rapide](https://www.postgresql.org/docs/current/gin-implementation.html#GIN-FAST-UPDATE) qui est activée par défaut dans PostgreSQL.

Indiquez un nombre entier de kilooctets dans le paramètre [gin\_pending\_list\_limit](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-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](https://www.postgresql.org/docs/current/gist.html). Ces index sont automatiquement créés pour les champs spatiaux ayant [`spatial_index=True`](/fr/4.2/ref/contrib/gis/model-api/#django.contrib.gis.db.models.BaseSpatialField.spatial_index). Ils sont également utiles pour d’autres types, tels que [`HStoreField`](/fr/4.2/ref/contrib/postgres/fields/#django.contrib.postgres.fields.HStoreField) ou les [champs d’intervalle](/fr/4.2/ref/contrib/postgres/fields/#range-fields).

Pour utiliser cet index sur des types de données ne figurant pas dans les [classes d’opérateurs gist](https://www.postgresql.org/docs/current/gist-builtin-opclasses.html) intégrées, vous devez activer [l’extension btree\_gist](https://www.postgresql.org/docs/current/btree-gist.html) dans PostgreSQL. Vous pouvez installer l’extension par une opération de migration [`BtreeGistExtension`](/fr/4.2/ref/contrib/postgres/operations/#django.contrib.postgres.operations.BtreeGistExtension).

Définissez le paramètre `buffering` à `True` ou `False` pour activer ou désactiver manuellement la [construction avec tampon](https://www.postgresql.org/docs/current/gist-implementation.html#GIST-BUFFERING-BUILD) de l’index.

Indiquez un nombre entier entre 10 et 100 pour le paramètre [fillfactor](https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS) 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](https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS) 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](https://www.postgresql.org/docs/current/spgist.html).

Indiquez un nombre entier entre 10 et 100 pour le paramètre [fillfactor](https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS) afin d’ajuster la compression des pages d’index. La valeur par défaut de PostgreSQL est de 90.

> **Changed in Django 4.1**
>
> La prise en charge de la couverture des index SP-GiST à partir de PostgreSQL 14+ a été ajoutée.

## Expressions `OpClass()`

#### `class OpClass(expression, name)`

Une expression `OpClass()` représente l”`expression` avec une [classe d’opérateur](https://www.postgresql.org/docs/current/indexes-opclass.html) 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`](/fr/4.2/ref/settings/#std-setting-INSTALLED_APPS). Définissez le paramètre `name` au nom de la .

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`.

> **Changed in Django 4.1**
>
> La prise en charge des contraintes d’exclusion a été ajoutée.
