PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Recupero di righe da più tabelle con UNION ALL o utilizzando una tabella in produzione?

In generale trovo quell'uso estensivo di UNION suggerisce una cattiva progettazione del database. Ci sono casi in cui UNION e UNION ALL hanno senso, ma dovrebbero essere relativamente rari al di fuori delle espressioni di tabelle comuni ricorsive.

PostgreSQL fornisce un numero abbastanza elevato di opzioni per mantenere gestibili le prestazioni su un'unica tabella e, come hai sottolineato, gli indici parziali sono un ottimo modo per gestire questo problema.

Il problema principale con la suddivisione delle tabelle in modo tale che UNION affermazioni comuni è che rende piuttosto problematica la gestione delle chiavi primarie e esterne. In generale, è quasi sempre molto meglio assicurarsi prima che la struttura dei dati sia chiara e gestibile, quindi preoccuparsi dell'ottimizzazione piuttosto che preoccuparsi dell'ottimizzazione e quindi cercare di rendere gestibile la soluzione ottimizzata.