BRIN Index

PostgreSQL 🔴 Senior

Définition

Block Range Index, index extrêmement compact qui stocke les min/max par bloc de pages. Idéal pour les colonnes naturellement ordonnées comme les timestamps.

Analogie

Au lieu d'indexer chaque page d'un livre, noter juste 'pages 1-50 : chapitres A-C'.

Exemple de code

CREATE INDEX idx_logs_time
  ON logs USING brin (created_at)
  WITH (pages_per_range = 128);

Cas d'usage

Indexer des tables de logs ou de séries temporelles avec des milliards de lignes et un index minuscule.

Anti-pattern

Utiliser BRIN sur des colonnes dont les valeurs ne sont pas corrélées a l'ordre physique des lignes.

Termes liés

#sgbd#interview#database#postgresql

En entretien

  1. Explique-moi le principe d'un index BRIN et son intérêt.

    Un BRIN, Block Range Index, stocke seulement les min/max par bloc de pages, un peu comme un livre qui indique juste 'pages 1-50 : chapitres A-C'. Il est idéal pour indexer des tables de logs ou de séries temporelles avec des milliards de lignes et un index minuscule.

  2. Quand éviter d'utiliser un index BRIN ?

    Quand les valeurs de la colonne ne sont pas corrélées à l'ordre physique des lignes sur le disque. Sans cette corrélation naturelle, comme pour des timestamps insérés dans l'ordre, le BRIN perd son efficacité.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre