Lessico IT › Database › CTE MATERIALIZED

CTE MATERIALIZED

Database Svenska → Aggiornato: 2026-10-05

Parola chiave di PostgreSQL (WITH ... AS MATERIALIZED / NOT MATERIALIZED) che controlla se una CTE viene calcolata una volta sola e memorizzata, oppure incorporata nella query principale perché il planner possa ottimizzare oltre il suo confine. Decide se la CTE sarà un vantaggio o un collo di bottiglia.

Contesto: prima di PostgreSQL 12 ogni CTE era una «optimization fence», cioè veniva sempre materializzata (calcolata a parte), il che poteva impedire al planner di spingere in basso i filtri e renderla molto più lenta di una sottoquery equivalente. Dalla versione 12 le CTE usate una sola volta sono incorporate per impostazione predefinita (NOT MATERIALIZED), spesso con prestazioni migliori. MATERIALIZED forza il vecchio comportamento: utile quando la CTE è costosa e riutilizzata più volte (si calcola una volta), o per impedire di proposito che il planner la ricalcoli. Regola pratica: lasciare il valore predefinito; usare MATERIALIZED con cognizione per riusi costosi, NOT MATERIALIZED per forzare l'inlining nei vecchi schemi. Uno strumento concreto per mettere a punto le query analitiche.

← Torna al lessico