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.