Expression Index

PostgreSQL 🟡 Mid

Définition

Index créé sur une expression ou une fonction plutôt que sur une colonne brute. Permet d'indexer des transformations comme LOWER(), des extractions de date ou des calculs.

Analogie

Un index de livre qui classe les titres sans accents ni majuscules pour une recherche simplifiée.

Exemple de code

CREATE INDEX idx_users_lower_email
  ON users (LOWER(email));
-- La requete doit utiliser la meme expression
SELECT * FROM users
  WHERE LOWER(email) = '[email protected]';

Cas d'usage

Optimiser les recherches case-insensitive ou les filtres sur des champs transformes.

#sgbd#interview#database#postgresql

En entretien

  1. Explique-moi ce qu'est un index sur expression et pourquoi on en a besoin.

    C'est un index créé sur une expression ou une fonction plutôt que sur une colonne brute, par exemple LOWER(email). Ça permet d'optimiser les recherches insensibles à la casse ou les filtres sur des champs transformés.

  2. Quel piège courant fait qu'un tel index n'est pas utilisé par une requête ?

    L'index n'est exploité que si la requête utilise exactement la même expression que celle indexée, ici WHERE LOWER(email) = .... Comparer directement la colonne brute empêche PostgreSQL d'utiliser cet index.

Dans l'actu

  • 02/08 Prisma 8 permet de déclarer des index d'expression, partiels et uniques directement dans le Prisma Schema Language ou en TypeScript, et sait désormais lire les index existants ainsi que les politiques de row-level security de la base. Bilan août 2026 →

Fiche mise à jour le 2026-09-27

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