En général, je trouve que l'utilisation intensive de UNION
suggère une mauvaise conception de la base de données. Il y a des cas où UNION
et UNION ALL
ont du sens, mais elles devraient être relativement rares en dehors des expressions de table communes récursives.
PostgreSQL fournit un assez grand nombre d'options pour maintenir les performances sur une seule table gérable, et comme vous le soulignez, les index partiels sont un très bon moyen de gérer ce problème.
Le problème majeur avec la décomposition des tables telles que UNION
déclarations sont courantes, c'est que cela rend la gestion des clés primaires et étrangères assez problématique. En général, il est presque toujours préférable de s'assurer d'abord que votre structure de données est claire et gérable, puis de vous soucier de l'optimisation plutôt que de vous soucier de l'optimisation, puis d'essayer de rendre la solution optimisée gérable.