Generellt sett tycker jag att UNION
används i stor utsträckning föreslår dålig databasdesign. Det finns fall där UNION
och UNION ALL
vettigt men de borde vara relativt sällsynta utanför rekursiva vanliga tabelluttryck.
PostgreSQL tillhandahåller ett ganska stort antal alternativ för att hålla prestanda på en enda tabell hanterbar, och som du påpekar är partiella index ett mycket bra sätt att hantera detta problem.
Det stora problemet med att dela upp tabeller så att sådana UNION
uttalanden är vanliga är att det gör primär- och utländsk nyckelhantering ganska problematisk. I allmänhet är det nästan alltid mycket bättre att först se till att din datastruktur är tydlig och hanterbar, och sedan oroa dig för optimering än att oroa sig för optimering och sedan försöka göra den optimerade lösningen hanterbar.