PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Récupérer des lignes de plusieurs tables avec UNION ALL ou utiliser une table en production ?

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.