Over het algemeen vind ik dat uitgebreid gebruik van UNION suggereert een slecht databaseontwerp. Er zijn gevallen waarin UNION en UNION ALL logisch, maar ze zouden relatief zeldzaam moeten zijn buiten recursieve algemene tabeluitdrukkingen.
PostgreSQL biedt een vrij groot aantal opties om de prestaties op een enkele tabel beheersbaar te houden, en zoals u aangeeft, zijn gedeeltelijke indexen een zeer goede manier om dit probleem te beheren.
Het grote probleem met het opsplitsen van tabellen zodat zulke UNION uitspraken veel voorkomen, is dat het beheer van primaire en externe sleutels behoorlijk problematisch is. Over het algemeen is het bijna altijd veel beter om ervoor te zorgen dat uw gegevensstructuur eerst duidelijk en beheersbaar is, en dan zorgen te maken over optimalisatie, dan u zorgen te maken over optimalisatie en vervolgens proberen de geoptimaliseerde oplossing beheersbaar te maken.