Index sur expression Expression index
Un index portant sur le résultat d'une expression ou d'une fonction plutôt que directement sur une colonne. CREATE INDEX ON users (lower(email)) accélère WHERE lower(email) = .... Aussi appelé index fonctionnel.
Cas d'usage : recherche insensible à la casse (lower()), indexation d'un champ JSONB ((data->>'country')), clés calculées (date_trunc('day', created_at)). Condition : l'expression doit être IMMUTABLE (déterministe — now() ne marchera pas). La requête doit reprendre exactement la même expression que l'index pour que le planificateur l'utilise. Contrepartie : l'index est recalculé à chaque écriture. À distinguer d'une colonne générée (qui matérialise la valeur dans une vraie colonne) — l'index sur expression ne stocke que le résultat indexé. Pratique pour éviter les colonnes redondantes.