Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

Index BRIN de PostgreSQL

Les index BRIN (Block Range INdexes) de PostgreSQL sont utilisés pour traiter efficacement les tableaux volumineux, en particulier ceux dont les données sont naturellement ordonnées. Ces index constituent une solution légère et peu encombrante pour l'indexation de grands ensembles de données.

Utilisation
Les index BRIN sont idéaux pour les colonnes dont les données sont naturellement ordonnées, telles que les horodatages ou les séquences, et sont utilisés de préférence pour les tableaux très volumineux pour lesquels les index B-tree traditionnels ne seraient pas pratiques. Ils donnent de bons résultats lorsque les données sont accessibles par plages.

sql
CREATE INDEX index_name
ON table_name USING BRIN (column_name);

Dans cette syntaxe, `CREATE INDEX ... USING BRIN` spécifie la création d'un index BRIN sur la colonne spécifiée du tableau. Les index BRIN indexent des "plages de blocs" du tableau, plutôt que des tableaux individuels, ce qui les rend particulièrement efficaces en termes d'espace.

Exemples

1. Création de l'indice BRIN de base

sql
CREATE INDEX brin_idx
ON sales USING BRIN (sale_date);

Cet exemple crée un index BRIN sur la colonne `sale_date` du tableau `sales`, optimisant ainsi les requêtes qui impliquent des plages de dates.

2. Index BRIN sur plusieurs colonnes

sql
CREATE INDEX brin_idx
ON logs USING BRIN (timestamp, log_level);

Ici, un index BRIN est créé sur les deux colonnes `timestamp` et `log_level` du tableau `logs`, ce qui peut améliorer les performances des requêtes lors du filtrage sur ces champs.

3. Indice BRIN avec options spécifiques

sql
CREATE INDEX brin_custom_idx
ON measurements USING BRIN (temperature) WITH (pages_per_range = 32);

Cet exemple crée un index BRIN sur la colonne `temperature` avec un paramètre personnalisé `pages_per_range`, qui affecte la quantité de données indexées par bloc. Une plus petite valeur de `pages_per_range` peut améliorer les performances des requêtes au prix d'un espace de stockage supplémentaire.

Conseils et bonnes pratiques

  • Optez pour le BRIN sur les grands tableaux. Utilisez les index BRIN pour les tableaux de grande taille dont les données sont naturellement ordonnées afin d'économiser de l'espace et de maintenir les performances. Ils peuvent ne pas convenir à des tableaux plus petits ou lorsque les données ne sont pas naturellement ordonnées, où les index B-tree pourraient être plus efficaces.
  • Tenez compte de l'ordre des données. Les index BRIN sont plus efficaces lorsque les données des colonnes sont naturellement ordonnées ou lorsque les requêtes impliquent des conditions de plage. Les "données naturellement ordonnées" sont des données qui sont insérées dans une séquence, comme les horodateurs.
  • Utilisez une taille de bloc appropriée. Ajustez `pages_per_range` pour affiner l'index pour des cas d'utilisation spécifiques, en équilibrant les performances avec l'espace de stockage. Les plages plus grandes utilisent moins d'espace mais peuvent réduire les performances des requêtes.
  • Contrôlez les performances. Évaluez régulièrement les performances des requêtes pour vous assurer que les index BRIN offrent les avantages escomptés, en particulier après des modifications de données. Envisagez une réindexation si les performances se dégradent.
  • Comprendre les limites. Les indices BRIN ne sont pas idéaux dans tous les cas de figure. Ils sont moins efficaces lorsque les données ne sont pas naturellement ordonnées et pour les requêtes qui n'impliquent pas de conditions d'étendue.
  • Maintenance de l'index. Surveillez le gonflement de l'index et envisagez une réindexation périodique pour maintenir les performances au fil du temps.

L'inclusion d'une comparaison avec d'autres types d'index tels que B-tree ou GiST peut aider les utilisateurs à décider quand utiliser les index BRIN. Par exemple, les index B-tree sont généralement mieux adaptés aux tableaux plus petits ou lorsque des correspondances exactes sont nécessaires, tandis que les index BRIN excellent dans les requêtes de portée sur de grands ensembles de données.