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.