Expression index
Ett index på resultatet av ett uttryck eller en funktion snarare än på en kolumn direkt. CREATE INDEX ON users (lower(email)) gör WHERE lower(email) = ... snabb. Kallas även functional index.
Use case: case-insensitive sökning (lower()), indexera ett JSONB-fält ((data->>'country')), beräknade nycklar (date_trunc('day', created_at)). Krav: uttrycket måste vara IMMUTABLE (deterministiskt — now() funkar inte). Frågan måste använda exakt samma uttryck som indexet för att planeraren ska nyttja det. Avvägning: indexet beräknas om vid varje skrivning. Skiljer sig från generated column (materialiserar värdet i en riktig kolumn) — expression index lagrar bara det indexerade resultatet. Vanligt för att slippa lägga till redundanta kolumner.